美文网首页
一行代码快速实现Android动态权限申请

一行代码快速实现Android动态权限申请

作者: 因为我的心 | 来源:发表于2023-09-12 13:45 被阅读0次

    Grantor是为了解决android 6.0 及以上版本的动态权限的第三方框架,使用简单。

    gitHub地址:https://github.com/dfqin/PermissionGrantor

    1、添加依赖在module's dependencies中

    //导入grantor依赖
    dependencies {
          implementation'com.github.dfqin:grantor:2.5'
    }
    

    2、使用实现两个方法

    PermissionsUtil.requestPermission(Context context, PermissionListener listener, String[] permissions);
    

    3、使用案例

    注意:除了在PermissionsUtil.requestPermission最后加Manifest.permission还需要在Manifest清单文件配置。

    private void requestCemera() {
            PermissionsUtil.requestPermission(getApplication(), new PermissionListener() {
                @Override
                public void permissionGranted(@NonNull String[] permissions) {
                    Toast.makeText(MainActivity.this, "访问摄像头", Toast.LENGTH_LONG).show();
                }
    
                @Override
                public void permissionDenied(@NonNull String[] permissions) {
                    Toast.makeText(MainActivity.this, "用户拒绝了访问摄像头", Toast.LENGTH_LONG).show();
                }
            }, Manifest.permission.CAMERA);
        }
    
    
        private void requestReadContact() {
            PermissionsUtil.TipInfo tip = new PermissionsUtil.TipInfo("注意:", "我就是想看下你的通讯录", "不让看", "打开权限");
            PermissionsUtil.requestPermission(this, new PermissionListener() {
                @Override
                public void permissionGranted(@NonNull String[] permissions) {
                    JSONArray arr = null;
                    try {
                        arr = getContactInfo(MainActivity.this);
                        if (arr.length() == 0) {
                            Toast.makeText(MainActivity.this, "请确认通讯录不为空且有访问权限", Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(MainActivity.this, arr.toString(), Toast.LENGTH_LONG).show();
                        }
    
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
    
                @Override
                public void permissionDenied(@NonNull String[] permissions) {
                    Toast.makeText(MainActivity.this, "用户拒绝了读取通讯录权限", Toast.LENGTH_LONG).show();
                }
            }, new String[]{Manifest.permission.READ_CONTACTS}, true, tip);
        }
    
        private void requestSms() {
    
            PermissionsUtil.requestPermission(this, new PermissionListener() {
                @Override
                public void permissionGranted(@NonNull String[] permissions) {
                    Toast.makeText(MainActivity.this, "访问消息", Toast.LENGTH_LONG).show();
                }
    
                @Override
                public void permissionDenied(@NonNull String[] permissions) {
                    Toast.makeText(MainActivity.this, "用户拒绝了读取消息权限", Toast.LENGTH_LONG).show();
                }
            }, new String[]{Manifest.permission.READ_SMS}, false, null);
        }
    
    

    相关文章

      网友评论

          本文标题:一行代码快速实现Android动态权限申请

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