Android 申请权限结果返回处理
生活随笔
收集整理的這篇文章主要介紹了
Android 申请权限结果返回处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?1、方法一
private static final int PERMISSION_REQUEST_CODE = 1;private String[] mPermissions = {Manifest.permission.CAMERA};/*** 申請權限結果返回處理*/@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which) {ActivityCompat.requestPermissions(MainActivity.this, mPermissions, PERMISSION_REQUEST_CODE);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic 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>() {@Overridepublic 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() {@Overridepublic void showRequestPermissionRationale(int requestCode, final Rationale rationale) {if(100==requestCode){Log.i("lgq","拒絕了。。。");}} };//相機權限監聽 PermissionListener listener = new PermissionListener() {@Overridepublic void onSucceed(int requestCode, @NonNull List<String> grantPermissions) {if(100==requestCode){//打開攝像頭Log.i("lgq","同意了了。。。");}}@Overridepublic void onFailed(int requestCode, @NonNull List<String> deniedPermissions) {if(100==requestCode){//相機AndPermission.defaultSettingDialog(MainActivity.this, 100).setTitle("權限申請失敗").setMessage("需相機基本權限,否則您將無法正常使用,請在設置中授權").setPositiveButton("好,去設置").setNegativeButton("", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {return;}}).show();}} };?
總結
以上是生活随笔為你收集整理的Android 申请权限结果返回处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7 安装 python3.5
- 下一篇: iphone 6p拆机,换开机键排线