在Android 11中,应用程序不能访问/存储用户外部存储上的所有文件,除非它们是应用自己创建的或与应用关联的媒体文件。以下是一个包含代码示例的解决方案,该代码可用于获取与应用关联的外部存储中的媒体文件:
1.在AndroidManifest.xml文件中添加以下权限:
2.使用调用requestLegacyExternalStorage()方法,在应用程序中启用旧的外部存储访问方式:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) { Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION); startActivity(intent); } else { //使用旧的外部存储访问方式 }
3.查询MediaStore以获取与应用关联的外部存储媒体文件路径。例如,以下代码可用于获取包含照片的所有文件路径:
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { String path = cursor.getString(0); //处理文件路径 } cursor.close(); }
上一篇:android.view.InflateException: 二进制XML文件第27行:解析android.widget.ToggleButton类时发生错误。
下一篇:Android11无法获取图像。