Android 11 存储新权限解析与使用入门
2022-11-20 13:42:58
Android 11 存储权限管理的重大转变:MANAGE_EXTERNAL_STORAGE
Android 11 在存储权限管理方面引入了一项重大的改变:MANAGE_EXTERNAL_STORAGE 权限。这标志着 Android 存储权限管理方式的范式转变,提供了更精细的控制和对外部存储访问的保护。
为什么需要新的存储权限?
早期版本的 Android 采用了简单的存储权限管理方法,即要么允许应用程序访问所有文件,要么拒绝访问。这种一刀切的做法并不理想,因为许多应用程序只需访问特定文件或目录,而无需访问整个外部存储。
Android 6.0 引入了运行时权限请求,允许用户在安装后授予或拒绝应用程序权限。虽然这提高了灵活性,但仍存在局限性。
MANAGE_EXTERNAL_STORAGE 权限:一种更细粒度的解决方案
MANAGE_EXTERNAL_STORAGE 权限赋予应用程序访问和管理外部存储上所有文件的能力,包括:
- 读取文件
- 写入文件
- 删除文件
- 创建目录
- 删除目录
- 重命名文件和目录
申请 MANAGE_EXTERNAL_STORAGE 权限
要使用 MANAGE_EXTERNAL_STORAGE 权限,应用程序必须在清单文件中声明该权限:
<manifest ... >
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
</manifest>
在运行时,应用程序必须在用户同意后才能使用该权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.MANAGE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// 已获得权限,可以访问存储
} else {
// 请求权限
requestPermissions(new String[]{Manifest.permission.MANAGE_EXTERNAL_STORAGE}, REQUEST_CODE_MANAGE_EXTERNAL_STORAGE);
}
注意事項
MANAGE_EXTERNAL_STORAGE 是一个危险权限,可能带来安全风险。因此,应用程序应向用户清晰解释该权限的用途和风险。
此权限仅适用于 Android 11 及更高版本。对于较低版本的 Android,应用程序应继续使用 WRITE_EXTERNAL_STORAGE 权限。
结论
MANAGE_EXTERNAL_STORAGE 权限标志着 Android 存储权限管理的新时代。它提供更细粒度的控制,允许应用程序访问特定文件,同时保护用户免受未经授权的访问。随着越来越多的应用程序采用此新权限,用户可以期待更灵活、更安全的存储管理体验。
常见问题解答
-
MANAGE_EXTERNAL_STORAGE 权限取代 WRITE_EXTERNAL_STORAGE 权限了吗?
- 是的,在 Android 11 及更高版本中,MANAGE_EXTERNAL_STORAGE 权限取代了 WRITE_EXTERNAL_STORAGE 权限。
-
所有应用程序都需要 MANAGE_EXTERNAL_STORAGE 权限吗?
- 不,只有需要访问外部存储上所有文件的应用程序才需要此权限。
-
为什么我应该授予应用程序 MANAGE_EXTERNAL_STORAGE 权限?
- 如果应用程序需要访问您的照片、视频或其他文件,您需要授予此权限。
-
我如何撤销 MANAGE_EXTERNAL_STORAGE 权限?
- 前往设备的“设置”>“应用程序”>“权限管理器”,然后找到应用程序并撤销权限。
-
如果我不授予 MANAGE_EXTERNAL_STORAGE 权限会发生什么?
- 该应用程序将无法访问您的外部存储上的任何文件。