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
)
相关推荐
Patrick_Wilson22 分钟前
青苔漫染待客迟
前端·设计模式·架构
Kotlin上海用户组1 小时前
Koin vs. Hilt——最流行的 Android DI 框架全方位对比
android·架构·kotlin
掘金安东尼3 小时前
把复杂留给架构,把简单留给开发 —— Amazon Aurora DSQL 宣布:全面可用
面试·架构·github
Code季风4 小时前
微服务分布式配置中心:Gin Web 服务层与 gRPC 服务层集成 Nacos 实战
分布式·微服务·rpc·架构·go·gin·consul
赋范大模型技术社区5 小时前
【LangChain 实战】多智能体协作实现浏览器自动化丨Agents 运行流程丨多工具串&并联调用
架构·github·代码规范
步、步、为营5 小时前
.net微服务框架dapr保存和获取状态
微服务·架构·.net
敖行客 Allthinker7 小时前
云原生安全观察:零信任架构与动态防御的下一代免疫体系
安全·ai·云原生·架构·kubernetes·ebpf
鹏程十八少8 小时前
10.Android 设计模式 核心模式之四动态代理 在商业项目中的落地
架构
星辰大海的精灵8 小时前
FastAPI开发AI应用,多厂商模型使用指南
人工智能·后端·架构