Android 动态获取权限
上次分享记录了下获取WiFi列表,在里面提到了需要动态获取一些权限才能确保WiFi能够正常使用。正好我有个动态获取权限的工具类,向大家分享一下,如有不妥之处还请多多指教,谢谢!
public class PermissUtil {
public static final int PERMISSON_REQUESTCODE = 123;
/**
* app需要进行检测的权限数组
* 根据自己项目情况去添加权限
*/
public static String[] appNeedPermissions = {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
};
/**
* app权限检测
*
*/
public static boolean checkPermissions(Activity activity, String... permissions) {
List<String> needRequestPermissonList = findDeniedPermissions(activity, permissions);
if (null != needRequestPermissonList
&& needRequestPermissonList.size() > 0) {
ActivityCompat.requestPermissions(activity,
needRequestPermissonList.toArray(
new String[needRequestPermissonList.size()]),
PERMISSON_REQUESTCODE);
return false;
} else return true;
}
/**
* 获取权限集中需要申请权限的列表
*
* @param permissions
* @return
*/
public static List<String> findDeniedPermissions(Activity contexts, String[] permissions) {
List<String> needRequestPermissonList = new ArrayList<String>();
for (String perm : permissions) {
if (ContextCompat.checkSelfPermission(contexts,
perm) != PackageManager.PERMISSION_GRANTED) {
needRequestPermissonList.add(perm);
} else {
if (ActivityCompat.shouldShowRequestPermissionRationale(
contexts, perm)) {
needRequestPermissonList.add(perm);
}
}
}
return needRequestPermissonList;
}
/**
* 检测是否说有的权限都已经授权
*
* @param grantResults
* @return
*/
public static boolean verifyPermissions(int[] grantResults) {
for (int result : grantResults) {
if (result != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
使用起来也很方便,一行代码搞定,瞬间即可动态获取权限,千万别忘了在AndroidManifest中也要添加相应的权限
PermissUtil.checkPermissions(this, PermissUtil.appNeedPermissions);
分享就结束了,同时也作为自己的一个记录,谢谢!