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
)
相关推荐
亚空间仓鼠7 小时前
Docker容器化高可用架构部署方案(六)
docker·容器·架构
RInk7oBjo8 小时前
从零设计生产级 Multi-Agent Harness:架构、评估、记忆、成本与 MCP 工具接入全拆解
架构
张伯毅8 小时前
如何构建一个生产级 AI Agent CLI —— 以 Claude Code 架构探索
人工智能·架构
covco9 小时前
分布式架构实战:全平台矩阵管理系统的技术实现与性能优化
分布式·矩阵·架构
dhashdoia10 小时前
GPT-5.5 代码开发实战:Codex与Browser Use深度集成与星链4SAPI优化方案
java·数据库·人工智能·gpt·架构
AiTop10011 小时前
商汤发布SenseNova 6.7 Flash-Lite:原生多模态架构打破“视觉转文本“瓶颈,Token消耗直降 60%
人工智能·ai·架构
不懂的浪漫12 小时前
02|Netty 服务端是怎么启动的:从 ServerBootstrap.bind() 看源码主线
架构·netty
小白编程锤炼13 小时前
深入解析:质量门禁
人工智能·算法·架构·vibe-coding
申耀的科技观察13 小时前
【观察】戴尔科技:从“架构解耦”到“智能融合”,DAP驱动现代化数据中心“再进化”
科技·架构
从零开始的奋豆13 小时前
从零构建 ClaudeCode 风格的 AI 编程助手:Code Agent 完整架构解析
人工智能·架构