在 Android 11 中,由于安全性问题,应用程序不再默认拥有对外部存储的完全访问权限。因此,开发人员需要在应用程序中实现相应的代码,以请求和管理外部存储权限。
以下是一个示例代码,演示了如何请求和管理外部存储权限。
首先,在 AndroidManifest.xml 文件中声明应用程序需要的权限:
然后,在需要访问外部存储空间的位置添加以下代码:
// 检查应用程序是否已经被授权访问外部存储 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// 如果用户还没有给予权限,则请求
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
} else { // 如果用户已经授权,则直接访问 performReadExternalStorage(); }
// 处理权限请求结果 @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE: { // 如果请求被取消,结果数组将为空 if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 用户已授权 performReadExternalStorage(); } else { // 用户拒绝授权 Toast.makeText(MainActivity.this, "Permission denied", Toast.LENGTH_SHORT).show(); } return; } } }
// 访问外部存储 private void performReadExternalStorage() { // 进行想要进行的操作,例如从外部存储读取文件 }
这样,当应用程序首次尝试访问外部存储时,用户将被提示授权。用户可以选择授权或拒