如何 select Android 默认允许管理所有文件选项?
How to select Android Allow management of all Files option by default?
我正在使用以下一组代码访问文件。但对于 Android 11,只有在应用程序信息屏幕上手动启用“允许管理所有文件”后才能使用。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
path = FileProvider.getUriForFile(getApplicationContext(), getApplicationContext().getPackageName() + ".helper.ProviderClass", contentUri);
intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
} else {
path = Uri.fromFile(contentUri);
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
}
任何人,请提出一个更好的解决方案来自动启用该选项。
您在 if else
中的当前代码实际上是相同的(除了文件 URI)... new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
为此 Intent
设置了操作,但是您下面的一行有覆盖此值与 setAction
调用
考虑在 Android 11 上检测您的权限状态,如果未授予则使用
startActivity(new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION));
这会将用户传递到正确的设置屏幕,在该屏幕上必须由用户手动授予权限,这就是当前的系统策略。然后在返回应用程序后再次检查权限,如果现在被授予(用户启用)然后 运行 您的视图文件意图
中的一些相关文档
阅读下面给出的 Android Link 的文档
Storage updates in Android 11
我正在使用以下一组代码访问文件。但对于 Android 11,只有在应用程序信息屏幕上手动启用“允许管理所有文件”后才能使用。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
path = FileProvider.getUriForFile(getApplicationContext(), getApplicationContext().getPackageName() + ".helper.ProviderClass", contentUri);
intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
} else {
path = Uri.fromFile(contentUri);
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
}
任何人,请提出一个更好的解决方案来自动启用该选项。
您在 if else
中的当前代码实际上是相同的(除了文件 URI)... new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
为此 Intent
设置了操作,但是您下面的一行有覆盖此值与 setAction
调用
考虑在 Android 11 上检测您的权限状态,如果未授予则使用
startActivity(new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION));
这会将用户传递到正确的设置屏幕,在该屏幕上必须由用户手动授予权限,这就是当前的系统策略。然后在返回应用程序后再次检查权限,如果现在被授予(用户启用)然后 运行 您的视图文件意图
中的一些相关文档阅读下面给出的 Android Link 的文档 Storage updates in Android 11