如何 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));

这会将用户传递到正确的设置屏幕,在该屏幕上必须由用户手动授予权限,这就是当前的系统策略。然后在返回应用程序后再次检查权限,如果现在被授予(用户启用)然后 运行 您的视图文件意图

HERE

中的一些相关文档

阅读下面给出的 Android Link 的文档 Storage updates in Android 11