完善了拒絕,和拒絕不再提醒以後的邏輯
public abstract class BaseBegPermissionActivity extends BaseActivity {
private TodoBackFromBeg backDo;
protected void setBackDo(TodoBackFromBeg backDo){
this.backDo=backDo;
}
/**
* 這個方法用於動態申請權限
*
* @param begPermissions 需要檢測的一些權限
*/
protected boolean checkPermissions(String[] begPermissions,int requestCode) {
boolean result = true;
if (Build.VERSION.SDK_INT >= 23) {
for (int i = 0; i < begPermissions.length; i++) {
int checkedPermissionResult = checkSelfPermission(begPermissions[i]);
if (checkedPermissionResult != PackageManager.PERMISSION_GRANTED) {
goBegPermission(begPermissions,requestCode);
result = false;
return result;
}
}
}
return result;
}
/**
* 彈出請求權限對話框
*/
private void goBegPermission(String[] begPermissions,int requestCode) {
if (Build.VERSION.SDK_INT >= 23) {
requestPermissions(begPermissions, requestCode);
}
}
/**
* 去設置
*/
private void gotoSetting() {
Intent intent = new Intent();
Uri packageURI = Uri.parse("package:" + MyApplication.packageName);
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(packageURI);
startActivity(intent);
}
@Override
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults) {
for (int i = 0; i < permissions.length; i++) {
if (Build.VERSION.SDK_INT >= 23) {
int checkedPermissionResult = checkSelfPermission(permissions[i]);
if (checkedPermissionResult != PackageManager.PERMISSION_GRANTED) {
backDo.cancelTodo(requestCode);
if (!shouldShowRequestPermissionRationale(permissions[i])) {
showGotoSetting(requestCode);
return;
}
}
}
}
backDo.backTodo(requestCode);
}
/**
* 彈出去設置界面對話框
*/
private void showGotoSetting(int requestCode) {
backDo.cancelTodo(requestCode);
HashMap<String, DialogInterface.OnClickListener> clickOptionMap = new HashMap<String, DialogInterface.OnClickListener>();
clickOptionMap.put("去設置", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
gotoSetting();
}
});
clickOptionMap.put("取消", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
CommonUtil.showButtonDialog(this, "未開啓用戶權限,去設置", "開啓用戶權限",
clickOptionMap);
}
public interface TodoBackFromBeg {
void backTodo(int requestCode);
void cancelTodo(int requestCode);
}
}