Android 申请权限结果返回处理


       private static final int PERMISSION_REQUEST_CODE = 1;

        private String[] mPermissions = {Manifest.permission.CAMERA};

        /**

         * 申请权限结果返回处理

         */

        @Override

        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

            super.onRequestPermissionsResult(requestCode, permissions, grantResults);

            Log.i("lgq","onRequestPermissionsResult ....."+requestCode);

            if (requestCode == PERMISSION_REQUEST_CODE) {

                boolean isAllGranted = true;

                for (int grant : grantResults) {  // 判断是否所有的权限都已经授予了

                    Log.i("lgq","申请权限结果===="+grant);

                    if (grant != PackageManager.PERMISSION_GRANTED) {

                        isAllGranted = false;

                        break;

                    }

                }

                if (isAllGranted) { // 所有的权限都授予了

//                    startCamera();

                    Log.i("lgq","同样同意kaiqil ..onRequestPermissionsResult...");

                } else {// 提示需要权限的原因

                    Log.i("lgq","同样反对kaiqil ..onRequestPermissionsResult...");

                    AlertDialog.Builder builder = new AlertDialog.Builder(this);

                    builder.setMessage("拍照需要允许权限, 是否再次开启?反对")

                            .setTitle("提示")

                            .setPositiveButton("确认", new DialogInterface.OnClickListener() {

                                @Override

                                public void onClick(DialogInterface dialog, int which) {

                                    ActivityCompat.requestPermissions(MainActivity.this, mPermissions, PERMISSION_REQUEST_CODE);

                                }

                            })

                            .setNegativeButton("取消", new DialogInterface.OnClickListener() {

                                @Override

                                public void onClick(DialogInterface dialog, int which) {

                                    dialog.dismiss();

                                    finish();

                                }

                            });

                    builder.create().show();

                }

            }

        }

当第一次点击禁止时:

2、方法二


1、添加依赖


//RxPermission权限申请

implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'

//RxBinding

implementation 'com.jakewharton.rxbinding2:rxbinding:2.0.0'

2、申请权限,处理申请结果


<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.CAMERA"/>


/**

 * 所有需要的权限类型

 */

private static final String[] PERMISSIONS = {Manifest.permission.WRITE_EXTERNAL_STORAGE,

        Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};


/**

 * 动态获取权限

 */

public void getPermission() {

    RxPermissions rxPermissions = new RxPermissions(MainActivity.this);

    rxPermissions.request(PERMISSIONS).subscribe(new Consumer<Boolean>() {

        @Override

        public void accept(Boolean granted) throws Exception {

            if(granted){

                //权限申请成功

                Toast.makeText(MainActivity.this,"cg",Toast.LENGTH_SHORT).show();

            }else{

                //权限申请不成功,弹窗提示退出

                Toast.makeText(MainActivity.this,"cg222",Toast.LENGTH_SHORT).show();

            }

        }

    });

}

进阶方法:



implementation 'com.yanzhenjie:permission:1.1.2'


public void checkPermission(){

    //先判断是否有相机权限

    AndPermission.with(this)

            .requestCode(100)

            .permission(Permission.CAMERA)

            .callback(listener)

            .rationale(mRationaleListener)

            .start();

}





//用户拒绝一次权限后,再次申请时检测到已经申请过一次该权限了,允许开发者弹窗说明申请权限的目的,获取用户的同意后再申请权限,避免用户勾选不再提示,导致不能再次申请权限

private RationaleListener mRationaleListener = new RationaleListener() {

    @Override

    public void showRequestPermissionRationale(int requestCode, final Rationale rationale) {

        if(100==requestCode){

            Log.i("lgq","拒绝了。。。");

        }



    }

};



//相机权限监听

PermissionListener listener = new PermissionListener() {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值