Android6.0之后谷歌改变了敏感权限的申请方式-申请敏感权限时会弹出选项框。
6.0权限申请方式如下:
/**
*
* @param activity
* @param permissions
*/
public static void checkPermission(final Activity activity, String[] permissions) {
ArrayList<String> permissionList = new ArrayList<String>();
//遍历
for (String permission : permissions) {
//判断权限
if (activity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(permission);
}
}
//申请权限
activity.requestPermissions(permissionList.toArray(new String[0]), 100);
}
/**
*
* @param activity
* @param permission
* 单个权限
*/
public static void checkPermission(final Activity activity, String permission) {
// 判断权限
if (activity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
// 处理拒绝授权后再次请求权限时的情况
if (activity.shouldShowRequestPermissionRationale(permission)) {
// 使用一个弹出框跳转到setting中 让用户手动开启权限
new AlertDialog.Builder(activity).setTitle(R.string.permission_alert_title)
.setPositiveButton(R.string.permission_alert_positive_button, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 跳转
Intent intent = new Intent();
intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setData(Uri.fromParts("package", activity.getPackageName(), null));
activity.startActivity(intent);
}
}).setNegativeButton(R.string.permission_alert_native_button, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show();
// 第一次申请权限
} else {
// 申请权限
activity.requestPermissions(new String[] { permission }, 100);
}
}
}