在sdcard android 4.4及以上

时间:2015-10-06 04:00:26

标签: android

关于这个主题有很多问题,但我找不到任何有关我的纠正示例的答案。

我正在使用三星galaxy S5运行android 4.4,这仅限于存储

官方文件说:

  

WRITE_EXTERNAL_STORAGE权限只能授予对设备上主外部存储的写访问权限。不得允许应用程序写入辅助外部存储设备,但合成权限允许的特定于程序包的目录除外。以这种方式限制写入可确保系统在卸载应用程序时清理文件。

我的应用程序需要将文件写入Sdcard(绝对路径为/storage/extSdCard),因此我将应用程序数据写入应用程序目录:/storage/extSdCard/Android/com.myapp.example/files但获得了权限拒绝异常。所以我怀疑上面的陈述:

  

除了在合成允许的特定于包的目录中   权限

我想我无法写入根目录/storage/extSdCard,但仍能将我的应用数据写入我的应用包目录。我在这里误解了什么吗?

p / s:我仍然可以将我的应用数据写入内置存储:/storage/emulated/0/Android/data/com.myapp.example/files。我不想使用getExternalFileDirs(),因为它总是返回内置的,而不是我的sdcard目录。

2 个答案:

答案 0 :(得分:2)

如果getExternalFilesDir(null)返回的地方与/storage/extSdCard/Android/com.myapp.example/files不同,那么我认为这就是为什么它会给你访问权限错误。您可以无权限写入的SD卡上唯一的位置是getExternalFilesDir()返回的目录

由于你说getExternalFilesDir(null)返回的目录是不可接受的,我建议你在你的清单中添加WRITE_EXTERNAL_STORAGE权限。

答案 1 :(得分:1)

您的应用特定目录应为/storage/extSdCard/Android/data/com.myapp.example/files而不是/storage/extSdCard/Android/com.myapp.example/files