在Android 12中,应用程序需要额外的权限才能访问其它应用程序的数据目录。以下是使用StorageAccessFramework
API授予这些权限的示例代码:
// Request permission to access other apps' data
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE);
// Handle the permission request result in onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
Uri uri = data.getData();
getContentResolver().takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
}
以上代码将打开一个应用选择器,使用户选择要授予访问权限的目录。一旦用户授权,takePersistableUriPermission
方法将使用FLAG_GRANT_READ_URI_PERMISSION
和FLAG_GRANT_WRITE_URI_PERMISSION
标志授予应用程序对目录的持久访问权限。此后,应用程序将能够读取和写入该目录以及其子目录中的文件。