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
)
相关推荐
alxraves5 小时前
医用超声远程会诊系统:会诊平台的核心架构与功能解析
java·人工智能·架构
幻风_huanfeng7 小时前
软考:高级软件架构师学习笔记----软件架构设计
架构·系统架构·软考·高级系统架构师
OCR_133716212758 小时前
技术拆解:国产GPU两大核心路线GPGPU与NPU的架构差异与落地现状
架构
跨境数据猎手9 小时前
反向海淘实战|独立站搭建+国内电商API对接
开发语言·爬虫·架构
xfhuangfu9 小时前
19c CDB架构下的数据库启动和停止
数据库·架构
爱折腾的小黑牛10 小时前
小程序云开发数据模型设计:礼账系统的三表结构
数据库·架构
XUHUOJUN11 小时前
Azure Local GPU 部署与企业应用场景指南(下篇)
microsoft·架构·nvidia·azure local
爱勇宝11 小时前
3位工程师靠“删AI代码”创业,一周收费1万美元:以后最贵的能力,可能不是写代码
前端·后端·架构
●VON12 小时前
HarmonyKit | 鸿蒙开发:项目目录结构与多模块架构最佳实践
华为·架构·单元测试·harmonyos·鸿蒙
没落英雄13 小时前
6. 从零搭建一个 AI Agent —— 构建 Web 前端,让用户能和 agent 实时交互
前端·人工智能·架构