READ_PHONE_STATE 权限似乎在 Android 11 中被主动拒绝
READ_PHONE_STATE permission seems to be actively rejected in Android 11
我在清单中有一个具有以下权限的应用程序:
<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
.
然后我使用了 ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_PHONE_STATE), 102)
,它直接调用 onRequestPermissionsResult
并立即获得授权结果 PERMISSION_DENIED
。
我在两台 Android 11 台设备(一台物理设备,一台模拟器)上复制了这个,我尝试更改包名称,卸载并重新安装应用程序等。
我知道出了什么问题。我包括的图书馆之一有这个:
Library's Manifest
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
android:maxSdkVersion="29" />
即使我在我的应用程序清单中定义了此权限,maxSdkVersion
进入了我的应用程序。
解决方案是删除您应用中的 maxSdkVersion
属性:
App's Manifest
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
tools:remove="android:maxSdkVersion" />
我在清单中有一个具有以下权限的应用程序:
<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
.
然后我使用了 ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_PHONE_STATE), 102)
,它直接调用 onRequestPermissionsResult
并立即获得授权结果 PERMISSION_DENIED
。
我在两台 Android 11 台设备(一台物理设备,一台模拟器)上复制了这个,我尝试更改包名称,卸载并重新安装应用程序等。
我知道出了什么问题。我包括的图书馆之一有这个:
Library's Manifest
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
android:maxSdkVersion="29" />
即使我在我的应用程序清单中定义了此权限,maxSdkVersion
进入了我的应用程序。
解决方案是删除您应用中的 maxSdkVersion
属性:
App's Manifest
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
tools:remove="android:maxSdkVersion" />