在我的android应用程序中,我将一些文件保存到Environment.getExternalStorageDirectory() + "\MyApp"
目录。在android 6棉花糖更新之前,这一切都很顺利。棉花糖更新后,我无法写入此目录。
如this答案中所述,在棉花糖中,应用程序在写入外部存储之前需要在运行时征求用户的许可。
但是,当我使用context.getExternalFilesDir(null)
而不是Environment.getExternalStorageDirectory()
时,我不需要在运行时请求任何权限,它只起作用(从context.getExternalFilesDir(null)
返回的路径也在外部存储目录中)。
这是一种巧合吗?还是我可以在运行时继续写信给context.getExternalFilesDir(null)
,而无需征得许可?
最佳答案
documentation表示:
从kitkat开始,无需任何权限即可读取或写入
返回的路径;调用应用程序始终可以访问它。这个
仅适用于为调用的包名生成的路径
申请。要访问属于其他包的路径,
需要write_external_存储器和/或read_external_存储器。
您可以在Android 4.4+上对getExternalFilesDir()
进行读/写访问,无需任何权限。
如果需要支持更低的api级别,我建议使用FileProvider。