工具很好用: https://www.jianshu.com/p/d6085c94cb08
不知道怎么导入直接将PermissionUtils复制到自己项目中
然后将下面的代码复制到要调用的activity 调用requestMorePermissions1()方法
private Context mContext;
// 相机权限、多个权限
private final String PERMISSION_CAMERA = Manifest.permission.CAMERA;
private final String[] PERMISSIONS = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE
,Manifest.permission.WRITE_EXTERNAL_STORAGE};
// 打开相机请求Code,多个权限请求Code
private final int REQUEST_CODE_CAMERA = 1, REQUEST_CODE_PERMISSIONS = 2;
// 自定义申请多个权限
private void requestMorePermissions1(){
PermissionUtils.checkMorePermissions(mContext, PERMISSIONS, new PermissionUtils.PermissionCheckCallBack() {
@Override
public void onHasPermission() {
toClass();
}
@Override
public void onUserHasAlreadyTurnedDown(String... permission) {
showExplainDialog(permission, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
PermissionUtils.requestMorePermissions(mContext, PERMISSIONS, REQUEST_CODE_PERMISSIONS);
}
});
}
@Override
public void onUserHasAlreadyTurnedDownAndDontAsk(String... permission) {
PermissionUtils.requestMorePermissions(mContext, PERMISSIONS, REQUEST_CODE_PERMISSIONS);
}
});
}
/**
* 解释权限的dialog
*/
private void showExplainDialog(String[] permission, DialogInterface.OnClickListener onClickListener) {
new AlertDialog.Builder(mContext)
.setTitle("申请权限")
.setMessage("我们需要" + Arrays.toString(permission) + "权限")
.setPositiveButton("确定", onClickListener)
.show();
}
/**
* 显示前往应用设置Dialog
*/
private void showToAppSettingDialog() {
new AlertDialog.Builder(mContext)
.setTitle("需要权限")
.setMessage("我们需要相关权限,才能实现功能,点击前往,将转到应用的设置界面,请开启应用的相关权限。")
.setPositiveButton("前往", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
PermissionUtils.toAppSetting(mContext);
}
})
.setNegativeButton("取消", null).show();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_CAMERA:
if (PermissionUtils.isPermissionRequestSuccess(grantResults))
{
// 权限申请成功
toClass();
} else {
Toast.makeText(mContext, "打开相机失败", Toast.LENGTH_SHORT).show();
}
break;
case REQUEST_CODE_PERMISSIONS:
PermissionUtils.onRequestMorePermissionsResult(mContext, PERMISSIONS, new PermissionUtils.PermissionCheckCallBack() {
@Override
public void onHasPermission() {
toClass();
}
@Override
public void onUserHasAlreadyTurnedDown(String... permission) {
Toast.makeText(mContext, "我们需要" + Arrays.toString(permission) + "权限", Toast.LENGTH_SHORT).show();
}
@Override
public void onUserHasAlreadyTurnedDownAndDontAsk(String... permission) {
Toast.makeText(mContext, "我们需要" + Arrays.toString(permission) + "权限", Toast.LENGTH_SHORT).show();
showToAppSettingDialog();
}
});
}
}