READ_PHONE_STATE 权限似乎在 Android 11 中被主动拒绝 [英] READ_PHONE_STATE permission seems to be actively rejected in Android 11

查看:726
本文介绍了READ_PHONE_STATE 权限似乎在 Android 11 中被主动拒绝的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在清单中有一个具有以下权限的应用程序:

I have an application with following permissions in Manifest:

<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

我通过 Android 11 手机中的设置"手动启用了所有权限.但是,如果我使用 ActivityCompat.checkSelfPermission(this,(Manifest.permission.READ_PHONE_STATE)) 来检查是否已授予 READ_PHONE_STATE 权限,结果总是 PERMISSION_DENIED.

I manually enabled all permissions through Settings in an Android 11 mobile. However, if I use ActivityCompat.checkSelfPermission(this,(Manifest.permission.READ_PHONE_STATE)) to check if READ_PHONE_STATE permission has been granted, the result is always PERMISSION_DENIED.

然后我使用了 ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_PHONE_STATE), 102),它简单地调用 onRequestPermissionsResult 和授权结果 PERMISSION_DENIED 立即.

I then used ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_PHONE_STATE), 102), which simply calls onRequestPermissionsResult with grant result PERMISSION_DENIED immediately.

我在两台 Android 11 设备(一台物理,一台模拟器)上复制了这个,我尝试更改包名称、卸载并重新安装应用程序等.

I reproduced this on two Android 11 devices (one physical, one emulator), and I tried changing the package name, uninstalling and reinstalling the app etc.

推荐答案

我发现出了什么问题.我包含的库之一有这个:

I figured out what went wrong. One of the libraries I was including had this:

Library's Manifest
<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    android:maxSdkVersion="29" />

即使我在我的应用清单中定义了这个权限,maxSdkVersion 也进入了我的应用.

and even though I defined this permission in my app manifest, the maxSdkVersion got into my app.

解决方案是删除应用中的 maxSdkVersion 属性:

The solution is to remove the maxSdkVersion property in your app:

App's Manifest
<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    tools:remove="android:maxSdkVersion" />

这篇关于READ_PHONE_STATE 权限似乎在 Android 11 中被主动拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆