Android组件化开发实战:封装权限管理请求框架

ALERTWINDOW=new String[]{};

SETTINGS=new String[]{};

} else {

CALENDAR = new String[]{

Manifest.permission.READ_CALENDAR,

Manifest.permission.WRITE_CALENDAR};

CAMERA = new String[]{

Manifest.permission.CAMERA};

CONTACTS = new String[]{

Manifest.permission.READ_CONTACTS,

Manifest.permission.WRITE_CONTACTS,

Manifest.permission.GET_ACCOUNTS};

//Android10及以上版本,新增2种权限

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {

LOCATION = new String[]{

Manifest.permission.ACCESS_FINE_LOCATION,

Manifest.permission.ACCESS_COARSE_LOCATION,

Manifest.permission.ACCESS_BACKGROUND_LOCATION,//在后台获取位置(Android 10.0及以上)

Manifest.permission.ACCESS_MEDIA_LOCATION//读取照片中的地理位置(Android 10.0及以上)

};

}else{

LOCATION = new String[]{

Manifest.permission.ACCESS_FINE_LOCATION,

Manifest.permission.ACCESS_COARSE_LOCATION};

}

MICROPHONE = new String[]{

Manifest.permission.RECORD_AUDIO};

//Android8以上版本PROCESS_OUTGOING_CALLS换成了ANSWER_PHONE_CALLS。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){

PHONE = new String[]{

Manifest.permission.READ_PHONE_STATE,

Manifest.permission.CALL_PHONE,

Manifest.permission.READ_CALL_LOG,

Manifest.permission.WRITE_CALL_LOG,

Manifest.permission.USE_SIP,

Manifest.permission.ADD_VOICEMAIL,

Manifest.permission.ANSWER_PHONE_CALLS,//接听电话(Android8.0及以上)

Manifest.permission.READ_PHONE_NUMBERS//读取手机号码(Android8.0及以上)

};

}else {

PHONE = new String[]{

Manifest.permission.READ_PHONE_STATE,

Manifest.permission.CALL_PHONE,

Manifest.permission.READ_CALL_LOG,

Manifest.permission.WRITE_CALL_LOG,

Manifest.permission.USE_SIP,

Manifest.permission.ADD_VOICEMAIL,

Manifest.permission.PROCESS_OUTGOING_CALLS};

}

SENSORS = new String[]{

Manifest.permission.BODY_SENSORS,

Manifest.permission.ACTIVITY_RECOGNITION};

SMS = new String[]{

Manifest.permission.SEND_SMS,

Manifest.permission.RECEIVE_SMS,

Manifest.permission.READ_SMS,

Manifest.permission.RECEIVE_WAP_PUSH,

Manifest.permission.RECEIVE_MMS};

/**

  • 外部存储权限

  • Android11以上版本,存储权限统一用MANAGE_EXTERNAL_STORAGE

*/

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R){

STORAGE = new String[]{

Manifest.permission.MANAGE_EXTERNAL_STORAGE};

}else {

STORAGE = new String[]{

Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.WRITE_EXTERNAL_STORAGE};

}

//安装应用权限(Android8.0及以上)

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){

PACKAGES=new String[]{Manifest.permission.REQUEST_INSTALL_PACKAGES};

}else{

PACKAGES = new String[]{};

}

//通知栏权限

NOTIFICATION=new String[]{Manifest.permission.ACCESS_NOTIFICATION_POLICY};

//悬浮窗权限

ALERTWINDOW=new String[]{Manifest.permission.SYSTEM_ALERT_WINDOW};

//系统设置权限

SETTINGS=new String[]{Manifest.permission.WRITE_SETTINGS};

}

}

}

2、创建PermissionUtils.java工具类,这个类主要是封装一些权限的通用方法,代码如下:

import android.annotation.TargetApi;

import android.app.Activity;

import android.content.pm.PackageManager;

import android.os.Build;

import androidx.fragment.app.Fragment;

import java.lang.annotation.Annotation;

import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.List;

/**

  • 权限的工具类

  • @author 安阳 QQ:15577969

  • @version 1.0

  • @team 美奇软件开发工作室

  • @date 2020/11/23 13:09

*/

public class PermissionUtils {

/**

  • 判断Android系统版本是否大于6.0

  • @return

*/

public static boolean judgeVersion() {

return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;

}

/**

  • 从申请的权限中找出未授予的权限

  • @param activity

  • @param permission

  • @return

*/

@TargetApi(value = Build.VERSION_CODES.M)

public static List findDeniedPermissions(Activity activity, String… permission) {

List denyPermissions = new ArrayList<>();

for (String value : permission) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值