一个简单的6.0权限封装
来源:互联网 发布:淘宝图片空间删除错了 编辑:程序博客网 时间:2024/05/22 14:16
public class PermissionUtils { private static PermissionUtils instance; private Activity activity; private int REQUEST_CODE_PERMISSION = 0x00011; private PermissionCallback callback; private PermissionUtils(Activity activity){ this.activity=activity; } public static PermissionUtils getInstance(Activity activity){ if (instance==null){ synchronized (PermissionUtils.class){ if (instance==null) instance=new PermissionUtils(activity); } } return instance; } /** * 请求权限 * * @param permissions 请求的权限 * @param requestCode 请求权限的请求码 */ public void requestPermission(String[] permissions, int requestCode,PermissionCallback callback) { this.REQUEST_CODE_PERMISSION = requestCode; this.callback=callback; if (checkPermissions(permissions)) { callback.permissionSuccess(REQUEST_CODE_PERMISSION); } else { List<String> needPermissions = getDeniedPermissions(permissions); ActivityCompat.requestPermissions(activity, needPermissions .toArray(new String[needPermissions.size()]), REQUEST_CODE_PERMISSION); } } /** * 设置权限回调 * @param requestCode 请求权限的请求码 * @param grantResults 请求权限的结果集 */ public void setPermissionCallBack(int requestCode,int[] grantResults){ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { return; } if (requestCode == REQUEST_CODE_PERMISSION) { if (verifyPermissions(grantResults)) { callback.permissionSuccess(REQUEST_CODE_PERMISSION); } else { callback.permissionFail(REQUEST_CODE_PERMISSION); showTipsDialog(); } } } /** * 检测所有的权限是否都已授权 * * @param permissions * @return */ private boolean checkPermissions(String[] permissions) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { return true; } for (String permission : permissions) { if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } /** * 获取权限集中需要申请权限的列表 * * @param permissions * @return */ private List<String> getDeniedPermissions(String[] permissions) { List<String> needRequestPermissionList = new ArrayList<>(); for (String permission : permissions) { if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED || ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) { needRequestPermissionList.add(permission); } } return needRequestPermissionList; } /** * 确认所有的权限是否都已授权 * * @param grantResults * @return */ private boolean verifyPermissions(int[] grantResults) { for (int grantResult : grantResults) { if (grantResult != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } /** * 显示提示对话框 */ private void showTipsDialog() { new AlertDialog.Builder(activity) .setTitle("") .setMessage("") .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { startAppSettings(); } }).show(); } /** * 启动当前应用设置页面 */ private void startAppSettings() { Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + activity.getPackageName())); activity.startActivity(intent); } public interface PermissionCallback{ void permissionSuccess(int requestCode); void permissionFail(int requestCode); }}
2 0
- 一个简单的6.0权限封装
- Android 6.0 运行时权限 fragment的简单封装 basefragment
- 一个简单的socket封装
- 一个HttpsURLConnection的简单封装
- 封装一个简单的轮播图
- 一个简单的Fibonacci类的封装
- 一个简单的串行协议的封装
- Android 6.0 的权限管理自己简单的封装--(到BaseActivity)
- 简单封装的一个彩色进度条【原创】
- 一个简单封装的分页类
- 简单封装的一个彩色进度条【原创】
- WebBrowser Control的一个简单C++封装
- 封装一个简单的同步Ajax函数
- 完成端口的一个简单封装类
- 封装一个简单的同步Ajax函数
- 完成端口的一个简单封装类
- 无缝滚动的一个简单封装
- WebBrowser Control的一个简单C++封装
- jquery 实现筛选功能。
- 解决RecyclerView局部刷新时闪烁
- iOS 滑动隐藏/显示tabbar
- 关于初涉JavaScript
- BZOJ3506 排序机械臂
- 一个简单的6.0权限封装
- [00000] 模板
- 【java】多线程中Thread.currentThread().getName()和this.getName()的区别
- 使用lnmp与nginx-rtmp-module搭建流媒体服务器
- Java就业指导
- 笔记
- Ogre::基础知识介绍
- 为什么优秀的程序员也是优秀的设计师
- DOM解析器