前言&演示
Android SDK23以后,使用权限需要显式申请。
最近的安卓项目反复使用到权限申请,于是把它写成了工具类。
演示:
权限申请实际演示
1、申请部分
1.1、Activiy申请
简单的说明:说明都在注释里面写了,我就挑重点说吧
权限数组:也可以用于申请单个权限(废话)
简单的调用:一般是把它写在一个检查权限的方法内部,要使用某项权限时,
调用这个方法去判断有没有权限。
public boolean checkPermission(){
//权限数组
String [] permissions={
Manifest.permission.CALL_PHONE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE};
//三个参数:
//permissions (权限数组)
//(上下文,只能这样调用:MainActivity.this)
//requestCode(请求码,标识你的申请)
return PermissionUtils.checkPermissions(permissions,0,MainActivity.this);
}
工具类:Activiy申请的方法:
/**
* (适用于Activity)
*
* 这个方法的作用是检查权限数组的中的权限,是否都已经得到授权,返回一个bool值
* 没有得到授权的权限,会新建一个数组去申请权限
*
* @param permissions 权限数组
* @param activity 用于调用权限申请、检查授权
* @param requestCode 标识你的申请,用于回调
* @return 返回bool值
*
* true:权限数组内部的权限都已经得到授权
* false:权限数组中有部分权限未得到授权
*/
public static boolean checkPermissions(String[] permissions, int requestCode,Activity activity) {
//判断版本
if (Build.VERSION.SDK_INT>=23){
int checkPermission;
//权限数组
@SuppressLint("InlinedApi")
List<String> notGrantedList = new ArrayList<>();
for (String permission:permissions){
//检查是否已经授权
checkPermission = activity.checkSelfPermission(permission);
if (checkPermission!= PackageManager.PERMISSION_GRANTED){
//未授权则添加进未授权数组
notGrantedList.add(permission);
}
}
//未授权数组长度判空
<