【发布时间】:2016-11-11 10:51:09
【问题描述】:
我的应用程序可以在带有External storage 分区或内置/外置 SD 卡的标准设备上正常运行。但是最近换了个Acer平板测试,上面所有的文件操作都坏掉了。
平板电脑只有Internal storage,标准公共目录位于其上(下载、DCIM 等)。我有一个存储库,用于检查外部是否可用,如果没有 - 配置为使用内部。但是,无论有没有图书馆,我都完全无法访问公共目录。这是我的印象:
检测到外部分区,
Environment.getExternalDirectory()返回一些公用文件夹,MEDIA_MOUNTED(读/写)状态,但我无法写、读、创建任何目录(@987654325 中的读/写权限@设置正确); /sdcard 如果从某个地方访问,而不是从另一个地方访问,那么 /sdcard 是空的,我猜是某种巫毒符号链接魔法......另一方面,当我切换到使用
Internal storage时,我只能将文件写入应用程序的私有文件夹(com/myapp/.../app_) /sdcard 无法访问,尽管它是实际上,在内部。- 尝试使用
Intents和ContentResolvers以让Android OS 它自己决定如何获取/授予对数据和公共内部目录的访问权限。即使它有效,我也需要完全重新实现我的 FileUtils 和 FilePicker,只是因为那个特定的设备。(该应用已在多个平板电脑、手机、模拟器上正常工作......) -
来自终端的
adb shell让我可以直接访问公共内部目录;Android Device Monitor没有;
感谢任何意见。谢谢。
【问题讨论】:
-
非常感谢,1615...!这解决了问题。