美文网首页
权限申请

权限申请

作者: 陈萍儿Candy | 来源:发表于2021-01-07 11:07 被阅读0次

    1.检测权限的方法

    import androidx.core.content.ContextCompat;
    int perm = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA);
    

    以上代码用于检查当前 APK 是否拥有使用摄像头的权限。它的返回值是一个整型。这个整型有两个值:PackageManager.PERMISSION_GRANTED 与 PackageManager.PERMISSION_DENIED ,分别代表着有权限与无权限。通常我们会根据当前权限的状态来决定是否去申请相关权限。
    2.申请危险的权限

    ActivityCompat.requestPermissions(this, new String[]{
            Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.CAMERA
        }, 0);
    

    当执行了这段代码以后,会有两种情况:一种是所申请的权限在当前应用中确实没有。另一种是所申请的权限在当前应用中已拥有。

    对于第一种情况,执行以后会发现系统将会弹出如下图所示的弹窗供用户选择:


    image.png

    如果权限已经有了,不会弹出弹窗,什么也不会发生
    3.申请权限结果回传
    当权限申请结果出来以后,系统会通过回调 Activity/fragment 中的以下方法来回传结果:

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode == 0) {
            try {
                for(int i = 0; i < permissions.length; i++) {
                    Logger.d(TAG, permissions[i] + ":" + grantResults[i]);
    // grantResults[i] 的结果就是PackageManager.PERMISSION_GRANTED或者PackageManager.PERMISSION_DENIED
                }
    
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    
    }
    

    注意:
    当你执行了权限申请代码以后,即执行了 ActivityCompat.requestPermissions(this, new String[]{}, 0); 以后,无论上面图片所示的权限弹窗是否弹出,当前 Activity 的状态都会进入到 onPause() 态。并且在权限申请结果出来以后,Activity 会回到 onResume() 态,即这一申请过程会导致 onPause() 与 onResume() 被执行一次。

    相关文章

      网友评论

          本文标题:权限申请

          本文链接:https://www.haomeiwen.com/subject/hfxzoktx.html