READ_PHONE_STATE 权限似乎在 Android 11 中被主动拒绝 [英] READ_PHONE_STATE permission seems to be actively rejected in 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屋!