关于这个主题有很多问题,但我找不到任何有关我的纠正示例的答案。
我正在使用三星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目录。
答案 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