如何在 Android 11 上获得请求所有文件访问权限
How to obtain Request All files access on Android 11
我正在调查与 Android 11
相关的文件访问更改
我已经从 Android R 配置了一个 AVD 并创建了一个具有以下清单内容的测试应用程序
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.my.application">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
然后我创建此 Intent 并开始 Activity 希望看到允许访问管理所有文件。在系统设置中
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
val uri = Uri.fromParts("package", packageName, null)
intent.data = uri
startActivity(intent)
但是,用户看到的是我的测试应用程序的“应用程序信息”屏幕。
如果我在设置中搜索,我可以找到 Apps & Notifications -> Special App Access -> All files access -> My test app is listed
这是用户授予此权限必须遵循的流程吗?
为什么不使用我构建的 Intent 将用户直接带到“所有文件访问”页面?
为
实施一个意图
Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
将允许您的应用 read/write 访问所有文件,甚至是可移动微型 SD 卡上的文件。
if (SDK_INT >= Build.VERSION_CODES.R) {
if (!Environment.isExternalStorageManager()) {
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
}
} else {
//below android 11=======
startActivity(new Intent(this, ActivityPicture.class));
ActivityCompat.requestPermissions(this, new String[]{WRITE_EXTERNAL_STORAGE}, 100);
}
还将此添加到清单中:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
我正在调查与 Android 11
相关的文件访问更改我已经从 Android R 配置了一个 AVD 并创建了一个具有以下清单内容的测试应用程序
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.my.application">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
然后我创建此 Intent 并开始 Activity 希望看到允许访问管理所有文件。在系统设置中
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
val uri = Uri.fromParts("package", packageName, null)
intent.data = uri
startActivity(intent)
但是,用户看到的是我的测试应用程序的“应用程序信息”屏幕。
如果我在设置中搜索,我可以找到 Apps & Notifications -> Special App Access -> All files access -> My test app is listed
这是用户授予此权限必须遵循的流程吗?
为什么不使用我构建的 Intent 将用户直接带到“所有文件访问”页面?
为
实施一个意图 Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
将允许您的应用 read/write 访问所有文件,甚至是可移动微型 SD 卡上的文件。
if (SDK_INT >= Build.VERSION_CODES.R) {
if (!Environment.isExternalStorageManager()) {
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
}
} else {
//below android 11=======
startActivity(new Intent(this, ActivityPicture.class));
ActivityCompat.requestPermissions(this, new String[]{WRITE_EXTERNAL_STORAGE}, 100);
}
还将此添加到清单中:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>