Android权限弹窗说明:使用BasicLibrary库的简单实现

一、前言


BasicUI是一些常用的Android UI组件和一些实用工具类封装,提高Android的开发效率

使用文档链接:github.com/Peakmain/Ba...

How to

  • Step 1. Add the JitPack repository to your build file

Add it in your root build.gradle at the end of repositories:

rust 复制代码
    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
  • Step 2. Add the dependency
arduino 复制代码
implementation 'com.github.Peakmain:BasicLibrary:+'
  • Step 3.some probleam

    如果你的gradle版本比3.5.3高,可能会出现以下几个问题:

    1、Entry name 'AndroidManifest.xml' collided

    解决办法:在gradle.properties添加以下代码

    ini 复制代码
      android.useNewApkCreator=false

    2、如果安装失败,用adb install安装报错提示如下

    failed to install app-debug.apk: Failure INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed to parse /data/app/vmdl1335956833.tmp/base.apk: Corrupt XML binary file

    解决办法:在添加依赖的build.gradle中添加以下代码

    arduino 复制代码
        android{
             packagingOptions {
              exclude 'AndroidManifest.xml'
           }
         }

二、效果图

三、使用

1. 注册权限弹窗事件监听

  • 定义一个 IPermissionPopupListener 对象,并注册到权限处理管理器中
  • 该监听器会处理权限弹窗的显示与隐藏。
kotlin 复制代码
// 定义一个全局的权限弹窗监听器变量
var locationListener: IPermissionPopupListener? = null

// 初始化并注册监听器
locationListener = AtPermissionUtils(activity).locationListener
PermissionHandlerManager.instance.registerListener(
    PermissionMapConstants.PermissionTag.LOCATION,
    locationListener!! // 注册相机权限的弹窗监听器
)
kotlin 复制代码
class AtPermissionUtils(val activity: Activity?) {

    val locationListener = createRequestListener(
        "位置权限使用说明",
        "开启定位权限,为您提供酒店推荐服务。"
    )

 private fun createRequestListener(title: String, message: String): IPermissionPopupListener {
    return object : IPermissionPopupListener {
        private val utils by lazy {
            PkToastUtils.build(activity).apply {
                setTitle(title)
                    .setMessage(message)
            }
        }

        override fun onShowPermissionPopup() {
            utils
                .show()
        }

        override fun onHidePermissionPopup() {
            utils.dismiss()
        }

    }
}
}

2. 创建权限弹窗监听器

创建具体的权限请求监听器

kotlin 复制代码
class AtPermissionUtils(val activity: Activity?) {

    // 创建一个用于显示权限请求弹窗的监听器
    val locationListener = createRequestListener(
        "位置权限使用说明",  // 弹窗标题
        "开启定位权限,为您提供酒店推荐服务。"  // 弹窗消息
    )

    // 创建权限请求监听器的方法
    private fun createRequestListener(title: String, message: String): IPermissionPopupListener {
        return object : IPermissionPopupListener {
            private val utils by lazy {
                PkToastUtils.build(activity).apply {
                    setTitle(title)  // 设置弹窗标题
                    setMessage(message)  // 设置弹窗消息
                }
            }

            // 当弹窗显示时调用
            override fun onShowPermissionPopup() {
                utils.show()  // 显示弹窗
            }

            // 当弹窗隐藏时调用
            override fun onHidePermissionPopup() {
                utils.dismiss()  // 隐藏弹窗
            }
        }
    }
}

3. 页面销毁时取消注册监听器

scss 复制代码
// 页面销毁时取消注册监听器
PermissionHandlerManager.instance.unregisterListener(
    PermissionMapConstants.PermissionTag.LOCATION,
    locationListener
)
相关推荐
Decay__5 小时前
VMware 安装 SQL Server 双节点 AlwaysOn 可用性组教程 —— WSFC、AG 与侦听器完整部署(系列核心篇)
运维·数据库·sql·mysql·架构
wangruofeng5 小时前
从 GIF 到 AVIF:网页图片格式演进与 2026 年选型指南
前端·架构
Softmaxmap6 小时前
从零做一个中文小模型:600 亿 token 数据、mHC + Engram 结构、到强化学习的全流程(开源)
架构
你三大爷6 小时前
从 Hessian 迁移到 protostuff:深嵌套模型反序列化耗时与高并发类加载锁的根治实战
后端·架构
一条Go11 小时前
接收方合并去重:同一个人为什么只该收到一次通知
后端·架构·github
吴建旭 智宅焕12 小时前
智能家居全国交付标准化架构的轻重分离设计:重勘测节点与轻执行流程的系统实现
架构·智能家居
flash俊杰12 小时前
v0.5-01 让桌面 AI 助手记得住:预算组装、递归摘要、长期记忆与评估基线
数据库·安全·架构
leo在掘金12 小时前
只挂了11小时,5000台开发机被塞进SSH公钥
后端·架构
HelloWorld00113 小时前
告警不是心疼 token,是根因没找对:把 400 条告警压成 1 条根因的归因管道实战
架构
时间的拾荒人14 小时前
Redis 哨兵(Sentinel)详解:原理、选举机制与实战部署
redis·面试·架构·sentinel