程序猿L 2023-11-17 14:23 采纳率: 0%
浏览 2

Android 权限问题

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

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-17 16:04
    关注

    【相关推荐】



    • 这篇博客: 极光一键登录集成手册 | Android中的 3.1 动态申请 READ_PHONE_STATE 权限 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      关于权限管理库,网上琳琅满目,在此特意推荐一款个人使用较为不错的动态权限管理库:

      PermissionsDispatcher

    使用也是很 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()
        }
    
    }
    

    上述代码中,第一步以及第二步必须填写,而为了程序的健壮性,一般我们还会添加例如用户拒绝权限以及用户点击 “不再询问” 的后续操作流程,此处仅仅是为了体验极光的一键登录,暂时完善个动态申请权限即可。😂😂😂


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月17日