现在的安卓手机只要安装几个应用内置储存里就会出现很多文件夹,这样用户很难定位自己的文件到底在哪.为了解决这个问题.安卓Q细化了 READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
两个权限.
app在访问属于自己特定的Media文件无需进行权限申请.这些更改会影响应用保存和访问外部存储上的文件的方式。
- app私有文件的孤立存储沙箱
Android Q为每个应用程序提供了一个独立的存储沙箱到外部存储设备,例如/ sdcard。 没有其他应用可以直接访问您应用的沙盒文件。 由于文件对您的应用是私有的,因此您不再需要任何权限来访问和保存您自己的文件在外部存储中。 此更改可以更轻松地维护用户文件的隐私,并有助于减少应用所需的权限数量。
在外部存储上存储文件的最佳位置是
Context.getExternalFilesDir()
返回的位置,因为此位置在所有Android版本中表现一致。 使用此方法时,请传入与要创建或打开的文件类型对应的媒体环境。 例如,要访问或保存app-private图像,请调用Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
。 - 媒体文件的共享集合 如果您的应用创建了属于该用户的文件,并且该用户希望在卸载您的应用时保留该文件,则将其保存到其中一个公共媒体集合中,也称为共享集合。 共享集合包括:照片和视频,音乐和下载。
- 查看其他应用程序文件的权限
您的应用程序无需请求任何权限即可在这些共享集合中创建和修改自己的文件。 但是,如果您的应用需要创建和修改其他应用已创建的文件,则必须首先请求相应的权限:
- 访问照片和视频共享集合中的其他应用程序文件需要
READ_MEDIA_IMAGES
或READ_MEDIA_VIDEO
权限,具体取决于您的应用程序需要访问的文件类型。 - 访问音乐共享集合中的其他应用程序文件需要
READ_MEDIA_AUDIO
权限。
- 访问照片和视频共享集合中的其他应用程序文件需要
- 访问共享集合
在请求必要的权限后,您的应用程序使用MediaStore API访问这些集合:
- 对于照片和视频共享集合,请使用
MediaStore.Images
或MediaStore.Video
- 对于Music共享集合,请使用
MediaStore.Audio
- 对于Downloads共享集合,请使用`MediaStore.Downloads
- 对于照片和视频共享集合,请使用
- 保留共享集合中的应用程序文件
© 著作权归作者所有
文章评论(0)