android 权限请求工具类
来源:互联网 发布:2017java不好找工作了 编辑:程序博客网 时间:2024/05/18 20:33
public class PermissonUtil { private String TAG = "PermissonUtil"; private static PermissonUtil permissonUtil; private int index = 0; private ArrayMap<Integer, RequestCallback> map = new ArrayMap<>(); private PermissonUtil() { } public static PermissonUtil getInstance() { if (permissonUtil == null) { permissonUtil = new PermissonUtil(); } return permissonUtil; } public interface RequestCallback { void onResult(boolean isGranted, String[] permissins); } public void requestPermissons(Activity activity, RequestCallback requestCallback, String... permissins) { map.put(index, requestCallback); boolean allPermissonGrant = true; for (int i = 0; i < permissins.length; i++) { if (ActivityCompat.checkSelfPermission(activity, permissins[i]) != PackageManager.PERMISSION_GRANTED) { allPermissonGrant = false; break; } } if (allPermissonGrant) { //请求的权限 已获取到 requestCallback.onResult(true, permissins); //移除map中的元素 map.remove(index); } else { //有 未获取到的权限,进行请求 ActivityCompat.requestPermissions(activity, permissins, index); } index++; } public void requestPermissons(Fragment fragment, RequestCallback requestCallback, String... permissins) { map.put(index, requestCallback); boolean allPermissonGrant = true; for (int i = 0; i < permissins.length; i++) { if (ActivityCompat.checkSelfPermission(fragment.getContext(), permissins[i]) != PackageManager.PERMISSION_GRANTED) { allPermissonGrant = false; break; } } if (allPermissonGrant) { //请求的权限 已获取到 requestCallback.onResult(true, permissins); //移除map中的元素 map.remove(index); } else { //有 未获取到的权限,进行请求 fragment.requestPermissions(permissins, index); } index++; } public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (map != null) { map.get(requestCode).onResult(isAllGranted(grantResults, permissions), permissions); //移除map中的元素 map.remove(requestCode); } } private boolean isAllGranted(int[] grantResults, String[] permissions) { boolean allPermissonGrant = true; for (int i = 0; i < grantResults.length; i++) { if (grantResults[i] != PackageManager.PERMISSION_GRANTED) { allPermissonGrant = false; Log.i(TAG, "--" + permissions[i] + "权限不同意"); break; } } return allPermissonGrant; }}
阅读全文
0 0
- android 权限请求工具类
- android 6.0 权限请求工具类
- android动态权限工具类
- Android 权限检查工具类
- Android----http请求工具类
- Android----http请求工具类
- Android网络请求工具类
- Android工具类-权限工具类
- Android网络请求,Get方式请求,HttpURLConnection请求工具类
- Android请求root权限
- Android M权限请求
- android 6.0权限请求
- Android多权限请求
- android权限请求
- android多权限请求
- Xamarin Android权限请求
- Android权限请求
- Android多权限请求
- C/C++ | 29-21 两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串
- html5
- 数字签名技术简介
- HDU 1301 Jungle Roads(最小生成树+克鲁斯卡尔算法)
- 面试题:判断一个节点是否在一棵二叉树中
- android 权限请求工具类
- 排序
- 搭建http服务将本地项目库导入GitLab
- 停止jetty-maven-plugin
- LeetCode-28-Implement strStr()(字符串匹配)
- [小记]JAVA对URL中的字符串处理(分割,转码)
- 关于空间风靡的心理入侵小游戏浅析
- 约瑟夫环
- Java基础语法之多态