随便写一下记个笔记
依赖:
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();
}