1. 程式人生 > >Android6.0以上動態許可權-AndPermission

Android6.0以上動態許可權-AndPermission

隨便寫一下記個筆記

依賴:

implementation 'com.yanzhenjie:permission:1.0.1'
//6.0以上動態申請許可權
    private void initAndPermission(){
        AndPermission.with(this)
                .requestCode(101)
                .permission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
                .rationale(mRationaleListener)
                .send();
        mRationaleListener= new RationaleListener() {
            @Override
            public void showRequestPermissionRationale(int requestCode, final Rationale rationale) {
                new AlertDialog.Builder(MainActivity.this)
                        .setTitle("友好提醒")
                        .setMessage("該應用需要SD卡許可權")
                        .setPositiveButton("同意", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.cancel();
                                rationale.resume();// 使用者同意繼續申請。
                            }
                        })
                        .setNegativeButton("拒絕", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.cancel();
                                rationale.cancel(); // 使用者拒絕申請。
                            }
                        }).show();
            }
        };
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        // 只需要呼叫這一句,剩下的 AndPermission 自動完成。
        AndPermission.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
    }

    // 成功回撥的方法,用註解即可,裡面的數字是請求時的 requestCode。
    @PermissionYes(101)
    private void getSDYes() {
        // 申請許可權成功,可以去做點什麼了。
        Toast.makeText(this, "獲取SD卡許可權成功", Toast.LENGTH_SHORT).show();
    }

    // 失敗回撥的方法,用註解即可,裡面的數字是請求時的 requestCode。
    @PermissionNo(101)
    private void getSDNo() {
        // 申請許可權失敗,可以提醒一下使用者。
        //finish();
        Toast.makeText(this, "獲取SD卡許可權失敗", Toast.LENGTH_SHORT).show();
    }