上次分享记录了下获取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);分享就结束了,同时也作为自己的一个记录,谢谢!