Android11中权限对话框无法显示
创始人
2024-09-30 18:00:56
0

在Android 11中,当您请求需要特定权限的应用程序时,权限对话框可能无法显示,因此您无法授予或拒绝权限。这是由于Android 11的一项新功能,称为“自适应权限提示”,该功能依赖于用户的上下文,并且只在需要时才会显示权限请求。

但是,您可以使用以下代码示例来强制显示权限对话框:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R){
    try {
        Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_APP_ALL_SCREENS_SETTINGS);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    } catch (Exception ex) {
        Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
            intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());
        } else {
            intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
            intent.setData(Uri.fromParts("package", getPackageName(), null));
        }
        startActivity(intent);
    }
} 

要使用此代码,您必须将应用程序发布到Google Play Store,并将targetSdkVersion设置为30或更高版本。

此代码将打开权限设置屏幕,让用户授予您需要的权限。如果打开权限设置失败,则将打开应用程序详细信息屏幕,供用户手动授予权限。

注意:虽然此方法可用于请求应用程序所需的权限,但可能会对用户造成干扰。在使用此方法之前,请确保您的应用程序遵循最佳做法,并尽可能少地请求权限。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:哪种网络模式具有... 使用AWS ECS中的awsvpc网络模式来获得最佳性能。awsvpc网络模式允许ECS任务直接在V...