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
)
相关推荐
程序猿追1 分钟前
深度解码昇腾 AI 算力引擎:CANN Runtime 核心架构与技术演进
人工智能·架构
晚霞的不甘9 分钟前
CANN 编译器深度解析:TBE 自定义算子开发实战
人工智能·架构·开源·音视频
程序猿追41 分钟前
昇腾算力之锚:深度解读 CANN ascend-toolkit 异构计算架构与工程实践
架构
一枕眠秋雨>o<44 分钟前
深入 CANN ops-nn:昇腾 NPU 算子开发的工程化实践与架构哲学
架构
未来龙皇小蓝1 小时前
RBAC前端架构-01:项目初始化
前端·架构
island13141 小时前
CANN Catlass 算子模板库深度解析:高性能 GEMM 架构、模板元编程与融合算子的显存管理策略
人工智能·神经网络·架构·智能路由器
晚霞的不甘1 小时前
CANN 支持强化学习:从 Isaac Gym 仿真到机械臂真机控制
人工智能·神经网络·架构·开源·音视频
哈__2 小时前
CANN: AI 生态的异构计算核心,从架构到实战全解析
人工智能·架构
七牛云行业应用2 小时前
Moltbook一夜崩盘:150万密钥泄露背后的架构“死穴”与重构实战
网络安全·postgresql·架构·高并发·七牛云
塔中妖2 小时前
CANN深度解读:从算子库看AI计算的底层架构
人工智能·架构