Android 6.0权限封装整合
来源:互联网 发布:面纱雾化器数据 编辑:程序博客网 时间:2024/05/22 02:03
package com.example.VerticalMarqueeTextView.util;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;/** * 權限封裝類 * Created by John on 2017/2/11. */public class XPermissionUtils { private static int mRequestCode=-1; public static OnPermissionListener onPermissionListener; public interface OnPermissionListener{ //權限授予 void onPermissionGranted(); //權限拒絕 void onPermissionDenied(); } @TargetApi(Build.VERSION_CODES.M) public static void requestPermissions(Context context, int requestCode, String[] permissions, OnPermissionListener onPermissionListener){ if(context instanceof Activity){ onPermissionListener=onPermissionListener; List<String> deniedPermissions=getDeniedPermissions(context,permissions); } } /** * 获取请求权限中需要授权的权限 */ private static List<String> getDeniedPermissions(Context context, String[] permissions) { List<String> 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(onPermissionListener!=null){ if(verifyPermissions(grantResults)){ onPermissionListener.onPermissionGranted(); }else{ onPermissionListener.onPermissionDenied(); } } } } /** * 驗證所有權限是否都已經授予 * @param grantResults * @return */ private static boolean verifyPermissions(int[] grantResults) { for (int grantResult:grantResults ) { if(grantResult!=PackageManager.PERMISSION_GRANTED){ return false; } } return true; }}
拨打电话权限
以拨打电话为例,首先在Manifest文件中定义好拨打电话权限: <uses-permission android:name="android.permission.CALL_PHONE"/>第一步(当用户点击拨打电话按钮时执行如下代码):MPermissionUtils.requestPermissionsResult(this, 1, new String[]{Manifest.permission.CALL_PHONE} , new MPermissionUtils.OnPermissionListener() { @Override public void onPermissionGranted() { Toast.makeText(MainActivity.this, "授权成功,执行拨打电话操作!", Toast.LENGTH_SHORT).show(); } @Override public void onPermissionDenied() { MPermissionUtils.showTipsDialog(MainActivity.this); } });第二步(重写onRequestPermissionsResult()方法,使用MPermissionUtils类中的方法进行接管):@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { MPermissionUtils.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults); }
另外韩国人也封装了权限框架PermissionGen需要的点击查看使用方法不再赘述!
0 0
- Android 6.0权限封装整合
- android 6.0权限申请封装
- android 6.0权限申请封装
- Android 6.0权限管理及其封装
- Android之6.0 权限申请封装
- android 6.0 Permission权限兼容的封装
- Android 6.0 权限的申请 与 封装
- Android 6.0 运行时权限封装框架
- Android 6.0 运行时权限简洁封装
- android 6.0权限系统总结和封装
- Android 6.0动态权限处理的封装
- Android 6.0权限详解及封装
- Android 6.0 运行时权限简洁封装
- Android 6.0 运行时权限封装
- android 6.0动态权限的封装写法
- Android 6.0以上 权限请求封装
- Android开发6.0权限的封装
- Android权限管理的封装
- HDU 1722 Cake *
- CountDownLatch详解
- java jstl 自定义标签
- Java面向对象(二)重写(Override)与重载(Overload)
- 您需要安装OS X 10.10或OS X 10.11以及OS X server v4 或 OS X server v5
- Android 6.0权限封装整合
- 寻找和为定值的两个数
- 【线程】线程/多线程问题/线程池
- Painting A Board----DFS
- 人人都应该了解的十大算法
- 前端开源项目周报0207
- 题目1068:球的半径和体积
- leetcode [Palindrome Number]
- BP神经网络-总结