有勇气的牛排博客

安卓 轮子哥 权限请求框架

有勇气的牛排 1186 安卓 2021-10-20 23:54:04

1 介绍

依赖

// https://mvnrepository.com/artifact/com.hjq/xxpermissions implementation group: 'com.hjq', name: 'xxpermissions', version: '10.6'

2 注册权限

在高版本收集中,出于对隐私保护,不能完全授予app权限,所以我们要动态申请的权限,在此之前需要在AndroidManifest.xml里面提前注册相关权限

<!-- 相机 --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" /> <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" /> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

3 使用

动态注册所需权限

XXPermissions.with(this) // 申请安装包权限 //.permission(Permission.REQUEST_INSTALL_PACKAGES) // 申请悬浮窗权限 //.permission(Permission.SYSTEM_ALERT_WINDOW) // 申请通知栏权限 //.permission(Permission.NOTIFICATION_SERVICE) // 申请系统设置权限 //.permission(Permission.WRITE_SETTINGS) // 申请单个权限 .permission(Permission.RECORD_AUDIO) // 申请多个权限 .permission(Permission.Group.CALENDAR) .request(new OnPermissionCallback() { @Override public void onGranted(List<String> permissions, boolean all) { if (all) { toast("获取录音和日历权限成功"); } else { toast("获取部分权限成功,但部分权限未正常授予"); } } @Override public void onDenied(List<String> permissions, boolean never) { if (never) { toast("被永久拒绝授权,请手动授予录音和日历权限"); // 如果是被永久拒绝就跳转到应用权限系统设置页面 XXPermissions.startPermissionActivity(MainActivity.this, permissions); } else { toast("获取录音和日历权限失败"); } } });

获取悬浮窗权限

XXPermissions.with(MainActivity.this) .permission(Permission.SYSTEM_ALERT_WINDOW) .request(new OnPermissionCallback() { @Override public void onGranted(List<String> permissions, boolean all) { ToastUtils.show("获取悬浮窗权限成功"); } });

参考地址:
https://github.com/getActivity/XXPermissions


留言

专栏
文章
加入群聊