Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法访问内部存储上的公用文件夹_Java_Android - Fatal编程技术网

Java 无法访问内部存储上的公用文件夹

Java 无法访问内部存储上的公用文件夹,java,android,Java,Android,我有一个应用程序,可以在带有外部存储分区或内置/外部SD卡的标准设备上正常工作。但最近我改用宏碁平板电脑进行测试,所有的文件操作都被破坏了 平板电脑只有内部存储器,标准公共目录(下载、DCIM等)位于该存储器上。我有一个存储库,它检查外部是否可用,如果不可用,则配置为使用内部。然而,无论有没有图书馆,我都无法访问公共目录。以下是我的印象: 检测到外部分区,Environment.getExternalDirectory()返回一些公用文件夹、媒体挂载(读/写)状态,但我根本无法写入、读取、创建

我有一个应用程序,可以在带有
外部存储
分区或内置/外部SD卡的标准设备上正常工作。但最近我改用宏碁平板电脑进行测试,所有的文件操作都被破坏了

平板电脑只有
内部存储器
,标准公共目录(下载、DCIM等)位于该存储器上。我有一个存储库,它检查外部是否可用,如果不可用,则配置为使用内部。然而,无论有没有图书馆,我都无法访问公共目录。以下是我的印象:

  • 检测到外部分区,
    Environment.getExternalDirectory()
    返回一些公用文件夹、媒体挂载(读/写)状态,但我根本无法写入、读取、创建目录(在
    Manifest.xml中的读/写权限设置正确)/SD卡是空的,如果访问从某个地方,而不是从另一个,一些巫毒符号魔法,我猜

  • 另一方面,当我切换到使用
    内部存储时
    ,我只能将文件写入应用程序专用文件夹(com/myapp/../app_979;)/sdcard是不可访问的,尽管它实际上位于内部

  • 试图使用
    意图
    内容解析程序
    ,以便让Android操作系统 自身决定如何获取/提供对数据和公共内部目录的访问。即使它能工作,我也需要完全重新实现我的FileUtils和FilePicker,仅仅因为这个特定的设备。(这个应用程序已经在几个平板电脑、手机、模拟器上正常工作了…)
  • adb shell
    从终端直接访问公共内部目录
    Android设备监视器
    没有

如有任何意见,我们将不胜感激。谢谢。

有关详细信息,请点击以下链接:

将文件保存到内部存储器时,可以通过调用以下两种方法之一获取相应的目录作为文件:

  • getFilesDir()
  • getCacheDir()
例如:

File file = new File(context.getFilesDir(), filename);
或者,您可以调用openFileOutput()来获取写入内部目录中的文件的FileOutputStream。例如,以下是如何将一些文本写入文件:

String filename = "myfile";
String string = "Hello world!";
FileOutputStream outputStream;

try {
  outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
  outputStream.write(string.getBytes());
  outputStream.close();
} catch (Exception e) {
  e.printStackTrace();
}

非常感谢,1615。。。!这解决了问题。谢谢,但我试过了。它使用应用程序的私有位置。我需要能够在公共文件夹中创建/读取/写入文件(下载,DCIM)。它恰好位于这个特定设备的内部存储器上。