我的应用程序有点问题。我有一个功能来拍照并存储它然后加载到画廊。
在存储图片之前,我会检查手机是否有ExternalStorage
。如果没有将图片保存在带getFilesDir()
的文件目录中,但我无法从内部存储中将其加载到图库中。
从ExternalStorage
加载图库的代码(重新扫描ExternalStorage,完美地工作):
path = Environment.getExternalStorageDirectory()+"";
c.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
+ path)));
从Files
目录加载图片的代码(不加载任何内容):
c.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
+ c.getFilesDir()+"/files/")));
PS:文件存在。我用adb shell
检查了它。
答案 0 :(得分:2)
默认情况下,保存在内部存储中的文件(应用程序文件夹 - / files)仅适用于创建它们的应用程序 - 在文件系统级别保证 - 并且Gallery应用程序无法加载文件。在内部存储中保存新文件时,必须明确允许该文件可由其他应用程序读/写。参考: http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
“MODE_PRIVATE将创建文件(或替换同名文件)并将其作为应用程序的私有。其他可用的模式有:MODE_APPEND,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。”