当前位置: 首页 > news >正文

封装了 Android 权限检查和申请功能 PermissionManager工具类,支持权限检查、申请、说明对话框显示和设置页面引导等功能。

封装了 Android 权限检查和申请功能,创建了一个独立的PermissionManager工具类。这个工具类可以轻松集成到任何 Android 应用中,支持权限检查、申请、说明对话框显示和设置页面引导等功能。

主要特点:

  • 简化的权限请求流程
  • 自动处理权限拒绝和永久拒绝场景
  • 提供友好的用户提示
  • 支持自定义权限说明
  • 可单独使用,不依赖其他组件

使用方法非常简单,只需创建实例、设置监听器、定义权限和调用检查方法即可。项目中还包含了完整的视频录制功能作为示例,展示了如何使用这个权限管理工具类。

PermissionManager是一个独立的权限管理工具类,提供以下功能:

  • 检查权限状态
  • 请求权限
  • 显示权限说明对话框
  • 引导用户到设置页面
  • 处理权限请求结果
  • 支持多种权限场景

集成步骤

1. 添加权限

在AndroidManifest.xml中添加所需权限:

<!-- 视频录制所需权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

2. 添加活动(如果使用视频录制功能)

在AndroidManifest.xml中注册活动:

<!-- 主活动 -->
<activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity><!-- 视频录制活动 -->
<activityandroid:name=".VideoRecordActivity"android:exported="true"android:screenOrientation="portrait" />

3. 复制文件

仅使用权限管理功能:
  • PermissionManager.java

代码如下:

1.权限管理器使用示例

package com.bg.videorecorder;import android.Manifest;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import java.util.List;/*** 权限管理器使用示例*/
public class PermissionUsageExample extends AppCompatActivity {private PermissionManager mPermissionManager;// 示例:不同功能需要的权限private String[] cameraPermissions = {Manifest.permission.CAMERA};private String[] storagePermissions = {Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE};private String[] locationPermissions = {Manifest.permission.ACCESS_FINE_LOCATION};private String[] microphonePermissions = {Manifest.permission.RECORD_AUDIO};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_permission_example);// 初始化权限管理器mPermissionManager = new PermissionManager(this);// 设置权限结果监听器mPermissionManager.setOnPermissionResultListener(new PermissionManager.OnPermissionResultListener() {@Overridepublic void onAllPermissionsGranted() {// 所有权限已授予,可以执行需要权限的操作Toast.makeText(PermissionUsageExample.this, "所有权限已授予", Toast.LENGTH_SHORT).show();}@Overridepublic void onPermissionsDenied(List<String> deniedPermissions) {// 权限被拒绝StringBuilder message = new StringBuilder("以下权限被拒绝:");for (String permission : deniedPermissions) {message.append("\n- ").append(PermissionManager.getPermissionName(permission));}Toast.makeText(PermissionUsageExample.this, message.toString(), Toast.LENGTH_SHORT).show();}@Overridepublic void onPermissionsPermanentlyDenied(List<String> permanentlyDeniedPermissions) {// 权限被永久拒绝StringBuilder message = new StringBuilder("以下权限已被永久拒绝,请在设置中手动开启:");for (String permission : permanentlyDeniedPermissions) {message.append("\n- ").append(PermissionManager.getPermissionName(permission));}Toast.makeText(PermissionUsageExample.this, message.toString(), Toast.LENGTH_SHORT).show();}});// 相机权限按钮Button cameraButton = findViewById(R.id.btn_camera_permission);cameraButton.setOnClickListener(v -> requestCameraPermission());// 存储权限按钮Button storageButton = findViewById(R.id.btn_storage_permission);storageButton.setOnClickListener(v -> requestStoragePermission());// 位置权限按钮Button locationButton = findV
http://www.dtcms.com/a/602483.html

相关文章:

  • 2.GPU 网络架构全栈规划与深度分析:从业务需求到落地优化(H100/H200/B200/GB200 实战视角)
  • 企业网站手机端跳转设置门户cms系统
  • 鞍山58路公交车路线苏州百度seo关键词优化
  • 大储和工商储的差异
  • Windows 终端延迟剖析:从“卡顿感”到毫秒账本
  • wordpress图片自动分页插件下载关键词排名优化工具
  • 17.PHP基础-数组
  • 【MyBatis笔记】 - 4 - 缓存 + 逆向工程 + 分页插件
  • jsp和.net做网站的区别好大夫在线医生免费咨询
  • 目标客户精准营销品牌seo推广咨询
  • 企业网站asp一篇网站设计小结
  • 数据库概论实验(黑龙江大学)
  • HCI 数据格式
  • 用wordpress仿站企业宣传方案模板
  • 使用Netlify部署前端项目
  • 网站设计结构图用什么做丝芭传媒有限公司
  • pagehide/beforeunload / unload / onUnmounted 执行顺序与navigator.sendBeacon使用陷阱详解
  • 解决若依框架点击菜单无效的问题(或者main主体白板)vue3版本
  • 回溯-22括号生成
  • 如何做网站卖衣服第一营销网
  • 怎么写网站建设的说明线上设计师是什么意思
  • 力扣(LeetCode) ——43.字符串相乘(C++)
  • 哪里有做网站服务世安建设有限网站
  • 目前哪些企业需要做网站建设的呢企业网站优化兴田德润优惠
  • strchr函数
  • 做图书网站赚钱么关于网站建设的名言
  • Xen PVH 模式启动 Dom0 配置文档
  • 26_FastMCP 2.x 中文文档之FastMCP服务端部署:HTTP 部署指南
  • cisp-pte之SQL注入题之vulnerabilities/fu1.php?id=1
  • 发布三小时,GitHub标星11K,华为内部的图解网络笔记限时开源