READ_PHONE_STATE权限已删除,全文搜不到该权限,PHONE_CALL也米有用。但电话权限还存在,什么原因?

关注【相关推荐】
关于权限管理库,网上琳琅满目,在此特意推荐一款个人使用较为不错的动态权限管理库:
使用也是很 easy,Follow me~
由于个人习惯使用 Kotlin ,我们先进行 PermissionsDispatcher 基础配置 (app/build) :
// ...
apply plugin: 'kotlin-kapt'
// ...
dependencies {
// ...
// 动态权限申请
implementation "org.permissionsdispatcher:permissionsdispatcher:4.6.0"
kapt "org.permissionsdispatcher:permissionsdispatcher-processor:4.6.0"
}
随后我们在要申请权限的地方新增注解并开始动态请求权限:
package com.hlq.jiguangdemo
import android.Manifest
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import cn.jiguang.verifysdk.api.JVerificationInterface
import permissions.dispatcher.NeedsPermission
import permissions.dispatcher.OnShowRationale
import permissions.dispatcher.RuntimePermissions
// 第一步:新增 RuntimePermissions 注解,标明在编译时生成对应请求映射
@RuntimePermissions
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
/**
* 一键登录
*/
public fun oneKeyLogin(view: View) {
// 第四步:检查权限是否授予
// 写这个之前记得 build 下,Runtime 运行时生成
requestReadPhoneStateWithPermissionCheck()
}
private fun handlerOneKeyLogin() {
// 这里开始编写实际的一键登录具体请求代码
}
/**
* 权限请求回调
*/
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
onRequestPermissionsResult(requestCode, grantResults)
}
/**
* 第二步:指明对应要动态申请的权限,可声请多个权限
*/
@NeedsPermission(Manifest.permission.READ_PHONE_STATE)
fun requestReadPhoneState() {
handlerOneKeyLogin()
}
/**
* 第三步:解释说明申请权限具体作用,随后 Build
*/
@OnShowRationale(Manifest.permission.READ_PHONE_STATE)
fun onRequestReadPhoneStateRationale() {
Toast.makeText(this, "请同意 App 请求授权!", Toast.LENGTH_SHORT).show()
}
}
上述代码中,第一步以及第二步必须填写,而为了程序的健壮性,一般我们还会添加例如用户拒绝权限以及用户点击 “不再询问” 的后续操作流程,此处仅仅是为了体验极光的一键登录,暂时完善个动态申请权限即可。😂😂😂