博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PermissionUtils
阅读量:5217 次
发布时间:2019-06-14

本文共 3067 字,大约阅读时间需要 10 分钟。

import android.annotation.TargetApi;import android.app.Activity;import android.content.Context;import android.content.pm.PackageManager;import android.os.Build;import android.support.v4.content.ContextCompat;import java.util.ArrayList;import java.util.List;/** * DESC 6.0 权限工具类 * Created by douhaoqiang on 2017/2/27. */public class PermissionUtils {    private static final String TAG = "PermissionUtils";    private static int mRequestCode = -1;    private static OnPermissionListener mOnPermissionListener;    /**     * 权限请求回调     */    public interface OnPermissionListener {        //权限通过        void onPermissionGranted();        //权限拒绝        void onPermissionDenied();    }    /**     * 调用请求响应的权限     * @param context     上下文菜单 必须为Activity     * @param requestCode 请求码     * @param permissions 请求权限     * @param listener    权限请求监听     */    @TargetApi(Build.VERSION_CODES.M)    public static void requestPermissions(Context context, int requestCode            , String[] permissions, OnPermissionListener listener) {        if (context instanceof Activity) {            mOnPermissionListener = listener;            List
deniedPermissions = getDeniedPermissions(context, permissions); if (deniedPermissions.size() > 0) { mRequestCode = requestCode; ((Activity) context).requestPermissions(deniedPermissions .toArray(new String[deniedPermissions.size()]), requestCode); } else { if (mOnPermissionListener != null) mOnPermissionListener.onPermissionGranted(); } } else { throw new RuntimeException("Context must be an Activity"); } } /** * 获取请求权限中需要授权的权限 */ private static List
getDeniedPermissions(Context context, String... permissions) { List
deniedPermissions = new ArrayList<>(); for (String permission : permissions) { if (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_DENIED) { deniedPermissions.add(permission); } } return deniedPermissions; } /** * 请求权限结果,对应Activity中onRequestPermissionsResult()方法。 */ public static void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (mRequestCode != -1 && requestCode == mRequestCode) { if (mOnPermissionListener != null) { if (verifyPermissions(grantResults)) { mOnPermissionListener.onPermissionGranted(); } else { mOnPermissionListener.onPermissionDenied(); } } } } /** * 验证所有权限是否都已经授权 */ private static boolean verifyPermissions(int[] grantResults) { for (int grantResult : grantResults) { if (grantResult != PackageManager.PERMISSION_GRANTED) { return false; } } return true; }}

 

转载于:https://www.cnblogs.com/loaderman/p/8269013.html

你可能感兴趣的文章
个人作业4-alpha阶段个人总结
查看>>
android smack MultiUserChat.getHostedRooms( NullPointerException)
查看>>
递归-下楼梯
查看>>
实用的VMware虚拟机使用技巧十一例
查看>>
监控工具之---Prometheus 安装详解(三)
查看>>
Azure Iaas基础之---创建虚拟机
查看>>
不错的MVC文章
查看>>
网络管理相关函数
查看>>
IOS Google语音识别更新啦!!!
查看>>
20190422 T-SQL 触发器
查看>>
[置顶] Linux终端中使用上一命令减少键盘输入
查看>>
poj1422_有向图最小路径覆盖数
查看>>
BootScrap
查看>>
[大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
查看>>
WEB_点击一百万次
查看>>
CodeForces - 878A Short Program(位运算)
查看>>
路冉的JavaScript学习笔记-2015年1月23日
查看>>
Mysql出现(10061)错误提示的暴力解决办法
查看>>
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
查看>>
NPM慢怎么办 - nrm切换资源镜像
查看>>