工具类PermissionUtils
网上找来的
package com.baidu.map.demo;
import android.content.Context;
import android.os.Build;
import com.yanzhenjie.permission.AndPermission;
/**
* Android权限申请工具类
*/
public class PermissionUtils {
/**
* 注释:权限申请回调
*/
public interface PermissionListener {
void onSuccess(Context context);
void onFailed(Context context);
}
/**
* 注释:应用相关组权限
*/
public static void applicationPermissions(Context context, PermissionListener listener, String[]... permissions) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
if (!AndPermission.hasPermissions(context, permissions)) {
AndPermission.with(context)
.runtime()
.permission(permissions)
.rationale((mContext, data, executor) -> {
//选择显示提示弹窗
executor.execute();
})
.onGranted((permission) -> {
listener.onSuccess(context);
})
.onDenied((permission) -> {
listener.onFailed(context);
})
.start();
} else {
listener.onSuccess(context);
}
} else {
listener.onSuccess(context);
}
}
/**
* 注释:应用相关单个权限
*/
public static void applicationPermissions(Context context, PermissionListener listener, String... permissions) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
if (!AndPermission.hasPermissions(context, permissions)) {
AndPermission.with(context)
.runtime()
.permission(permissions)
.rationale((mContext, data, executor) -> {
//选择显示提示弹窗
executor.execute();
})
.onGranted((permission) -> {
listener.onSuccess(context);
})
.onDenied((permission) -> {
listener.onFailed(context);
})
.start();
} else {
listener.onSuccess(context);
}
} else {
listener.onSuccess(context);
}
}
}
在build.gradle
中添加依赖
api 'com.yanzhenjie:permission:2.0.0-rc11'
和
implementation 'com.android.support:design:27.1.1'
后面这个不过不加会报错无法访问Fragment 找不到android.support.v4.app.Fragment的类文件
使用的时候 在申请权限的地方
PermissionUtils.applicationPermissions(this, new PermissionUtils.PermissionListener() {
@Override
public void onSuccess(Context context) {
// 定位初始化
initLocation();
}
@Override
public void onFailed(Context context) {
// 这里修改要申请的权限
if (AndPermission.hasAlwaysDeniedPermission(context, Permission.Group.Camera)
&& AndPermission.hasAlwaysDeniedPermission(context, Permission.Group.STORAGE)) {
AndPermission.with(context).runtime().setting().start();
}
finish();
}
}, Permission.Group.STORAGE, Permission.Group.Camera);
另外不要忘记还要在AndroidManifest清单中申请相应的权限