在你的应用的 AndroidManifest.xml 文件中,添加 MANAGE_EXTERNAL_STORAGE 权限声明
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
2. 启动系统设置页面请求权限:
在你的应用中,使用 ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION Intent 操作来引导用户到系统设置页面,让用户授予所有文件的管理权限。
Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
startActivity(intent);
3. 检查应用是否具有 MANAGE_EXTERNAL_STORAGE 权限:
在应用中,你可以使用 Environment.isExternalStorageManager() 方法来检查应用是否已经被授予 MANAGE_EXTERNAL_STORAGE 权限。
boolean hasPermission = Environment.isExternalStorageManager();
4. MANAGE_EXTERNAL_STORAGE 允许执行的操作
MANAGE_EXTERNAL_STORAGE 权限会授予以下权限:
- 对共享存储空间中的所有文件的读写访问权限。注意:/sdcard/Android/media 目录是共享存储空间的一部分。
- 对 MediaStore.Files 表的内容的访问权限。
- 对 USB On-The-Go (OTG) 驱动器和 SD 卡的根目录的访问权限。
- 除 /Android/data/、/sdcard/Android 以及 /sdcard/Android 的大多数子目录外,对所有内部存储目录的写入权限。该写入权限包括文件路径访问权限。获得该权限的应用仍然无法访问属于其他应用的应用专用目录,因为这些目录在存储卷上显示为 Android/data/ 的子目录。
当应用具有 MANAGE_EXTERNAL_STORAGE 权限时,它可以使用 MediaStore API 或直接文件路径访问这些额外的文件和目录。但是,当您使用存储访问框架时,只有在您不具备 MANAGE_EXTERNAL_STORAGE 权限也能访问文件或目录的情况下才能访问文件或目录。