分析三方權限申請原始碼時,發現不錯的邏輯,做個記錄:
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
.setData(Uri.fromParts("package", getPackageName(), null));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

可以結合權限申請使用上面的方法:
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == 10000){
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this,"同意",0).show();
} else if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
boolean showRationale = ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[0]);
if (!showRationale) {
//拒絕后,點擊"不在顯示"
new AppSettingsDialog.Builder(this).build().show();
Toast.makeText(MainActivity.this,"打開設定頁面",0).show();
}else{
//提示用戶
}
//showRationale 值說明
//1,沒有申請過權限,申請就是了,所以回傳false;
// 2,申請了用戶拒絕了,那你就要提示用戶了,所以回傳true;
// 3,用戶選擇了拒絕并且不再提示,那你也不要申請了,也不要提示用戶了,所以回傳false;
// 4,已經允許了,不需要申請也不需要提示,所以回傳false;
}
}
}
發現一些博客總結的也挺全:
https://blog.csdn.net/mahongy/article/details/94549550
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/281292.html
標籤:其他
