已经获取了 MANAGE_EXTERNAL_STORAGE 权限
时间: 2023-08-03 07:04:33 浏览: 159
如果你已经获取了 MANAGE_EXTERNAL_STORAGE 权限,那么你就可以遍历整个外部存储空间,包括其他应用程序的私有目录。下面是一个可以遍历整个外部存储空间的方法:
```
public void traverseFiles(Context context) {
if (Environment.isExternalStorageManager()) {
ContentResolver resolver = context.getContentResolver();
Uri uri = MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL);
String[] projection = {MediaStore.Files.FileColumns.DATA};
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
+ MediaStore.Files.FileColumns.MEDIA_TYPE_NONE;
Cursor cursor = resolver.query(uri, projection, selection, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA));
// 处理文件
}
cursor.close();
}
} else {
// 请求 MANAGE_EXTERNAL_STORAGE 权限
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
Uri uri = Uri.fromParts("package", context.getPackageName(), null);
intent.setData(uri);
context.startActivity(intent);
}
}
```
这个方法与之前的方法基本相同,只是在判断是否获取了 MANAGE_EXTERNAL_STORAGE 权限时,使用了 Environment.isExternalStorageManager() 方法。如果已经获取了该权限,则可以直接遍历整个外部存储空间,包括其他应用程序的私有目录。
阅读全文