在我的Android应用程序中,我将一些文件保存到Environment.getExternalStorageDirectory() + "\MyApp"
目录.这工作正常,直到android 6 marshmallow更新.棉花糖更新后,我无法写入此目录.
如本回答所述,在棉花糖中,应用程序需要在写入外部存储之前在运行时请求用户的许可.
但是,当我使用context.getExternalFilesDir(null)
而不是Environment.getExternalStorageDirectory()
,我不需要在运行时请求任何权限,它只是工作(返回的路径context.getExternalFilesDir(null)
也在外部存储目录内).
这有点巧合还是我可以在context.getExternalFilesDir(null)
没有得到运行许可的情况下继续写入?
该文件规定:
从KITKAT开始,读取或写入返回的路径不需要任何权限; 它总是可以访问调用应用程序.这仅适用于为调用应用程序的包名生成的路径.要访问属于其他包的路径,需要WRITE_EXTERNAL_STORAGE和/或READ_EXTERNAL_STORAGE.
您将拥有getExternalFilesDir()
Android 4.4+的读/写权限,无需任何权限.
如果您需要支持较低的API级别,我建议使用FileProvider.