Android6.0的权限问题
2016-08-24 18:42
399 查看
最近解决了Android6.0的权限问题,查了许多资料,也看了好多许多大神博客,现在梳理一下,总结为自己的问题。
一.检测权限的地方
我的项目:写在基类里面(BaseActivity:所有Activity继承的类)
二.代码如下:
/** * 需要进行检测的权限数组 */ protected String[] needPermissions = { Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE }; /** * 判断是否需要检测,防止不停的弹框 * true弹出权限框,false不弹出权限 */ private boolean isNeedCheck = true; @Override protected void onResume() { super.onResume(); if(isNeedCheck){ checkPermissions(needPermissions); } } /** * 判断权限,若无权限则弹框 * @param permissions */ private void checkPermissions(String... permissions) { List<String> needRequestPermissonList = findDeniedPermissions(permissions); if (null != needRequestPermissonList && needRequestPermissonList.size() > 0) { ActivityCompat.requestPermissions(this, needRequestPermissonList.toArray( new String[needRequestPermissonList.size()]), PERMISSON_REQUESTCODE); } } /** * 获取权限集中需要申请权限的列表 * @param permissions */ private List<String> findDeniedPermissions(String[] permissions) { List<String> needRequestPermissonList = new ArrayList<String>(); for (String perm : permissions) { if (ContextCompat.checkSelfPermission(this, perm) != PackageManager.PERMISSION_GRANTED) { needRequestPermissonList.add(perm); } else { if (ActivityCompat.shouldShowRequestPermissionRationale( this, perm)) { needRequestPermissonList.add(perm); } } } return needRequestPermissonList; } /** * 检测是否说有的权限都已经授权 * @param grantResults * @return */ private boolean verifyPermissions(int[] grantResults) { for (int result : grantResults) { if (result != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] paramArrayOfInt) { if (requestCode == PERMISSON_REQUESTCODE) { if (!verifyPermissions(paramArrayOfInt)) { showMissingPermissionDialog(); isNeedCheck = false; } } }
相关文章推荐
- 在android 6.0以上无法获取READ_PHONE_STATE权限的SecurityException的问题
- android 6.0 开发中 遇到权限授予方式变更的问题
- Android 6.0 运行时权限处理问题
- Android 6.0 权限管理的问题
- Android android 6.0权限校验及版本兼容问题
- Android 6.0权限问题
- 项目中处理android 6.0权限管理问题
- Android 6.0 运行时权限处理问题
- android 兼容6.0的权限问题
- Android 6.0的权限问题
- 在android 6.0以上无法获取READ_PHONE_STATE权限的SecurityException的问题
- 关于Android 6.0的权限问题这个大坑记录
- Android 6.0权限问题
- Android 6.0 运行时权限处理问题
- android 6.0权限问题
- 解决Android 6.0动态添加权限问题
- Android 6.0权限问题
- 关于android 6.0权限问题
- 在android 6.0以上无法获取READ_PHONE_STATE权限的SecurityException的问题
- Android 6.0 以上权限问题