动态申请权限:
android6.0之后不仅要manifest中访问还要动态申请权限:
原生动态申请权限:
mRead_content_btn.setOnClickListener(v -> {
//动态申请权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
//没权限
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS)) {
new AlertDialog.Builder(this)
.setTitle("apply permission").setMessage("开启通讯录阅读权限")
.setPositiveButton("Allow", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_CONTACTS}, CALL_PHONE_REQUEST_CODE);
}
}).show();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, CALL_PHONE_REQUEST_CODE);
}
} else {
//have permission
readContent();
}
});
关于shouldShowRequestPermissionRationale()的返回值:
-
在第一次用户安装后,用户同意就不会调用此方法
-
第一次用户拒绝
-
拒绝 & 没有选择不在提示 return true,表示下次再跟用户解释一下
-
拒绝 & 不在提示 return false,不想听过多解释
-
-
其余都是false
AndPermission:
github:https://github.com/yanzhenjie/AndPermission
private void requestPermission(@Permiss