跨端权限sdk使用说明

ChangeLog

Version 0.0.4-SNAPSHOT

提供以下接口

  • 获取请求权限的intent
  • 获取当前权限
  • 跳转到跨端权限的设置页
  • 监听权限的变化

接入方式

Gradle接入

增加maven仓库地址

maven {
    url = "https://pkgs.d.xiaomi.net:443/artifactory/maven-snapshot-virtual/"
}

dependencies增加依赖

implementation("com.mi.car.acrossterminal:api:0.0.4-SNAPSHOT")

BP接入

static_libs: [
    "across-terminal-perms-api"
]

接口说明

  • 请求权限
val intent = AcrossPermissionManager.getInstance().requestPermissionsIntent(
    arrayOf(AcrossPermissionManager.Permissions.PERMISSION_CAMERA),
    "deviceUidName",
    0,
    "设备名称",
    "com.mi.car.pkgName")
startActivityForResult(context as Activity, intent, 123, null) //业务方自己调用
  • 跳转设置页
AcrossPermissionManager.getInstance().jumpToSettingsPage(context as Activity)
  • 检查权限
val permissionState = AcrossPermissionManager.
                                getInstance().
                                checkPermission(context,"deviceUidName",AcrossPermissionManager.Permissions.PERMISSION_CAMERA)

返回值对应的权限状态,AcrossPermissionManager中的内部类定义了权限值对应的含义

public static class PermissionState {
    public static final int PERMISSION_GRANTED = 0; //同意授权
    public static final int PERMISSION_DENIED = 1; //拒绝授权
    public static final int PERMISSION_ONETIME = 2; //本次授权
    public static final int PERMISSION_PROMPT = 3; //弹窗询问
    public static final int PERMISSION_DENY_WITHOUT_PROMPT = 4; //拒绝授权且不再询问
}
  • 权限变化的监听

注意:注销监听,防止内存泄露

val listener = object : PermissionChangeListener {
    override fun onPermissionChange(p0: String?, p1: String?, p2: String?, p3: Int, p4: Int) {
        Log.d("MainActivity", "onPermissionChange $p0 $p1 $p2 $p3 $p4")
    }
}
//注册监听
AcrossPermissionManager.getInstance().addPermissionChangeListener(listener)
 
//注销监听
AcrossPermissionManager.getInstance().removePermissionChangeListener(listener)
  • 权限开始使用

mBinder是作为客户端请求权限的连接token,当客户端被kill时,能够使系统感知。

AcrossPermissionManager.getInstance().startPermission(this@PermissionMonitorService,
    "com.mi.car.packageName",
    AcrossPermissionManager.Permissions.PERMISSION_CAMERA,
    "deviceUidName",
    "设备名称",
    mBinder
)
  • 权限停止使用

传入开始权限时传入的Binder

AcrossPermissionManager.getInstance().stopPermission(this@PermissionMonitorService,
    "com.mi.car.packageName",
    AcrossPermissionManager.Permissions.PERMISSION_CAMERA,
    "deviceUidName",
    "设备名称",
    mBinder
)

📥 抓取自飞书 wiki 空间 7541192071952990209,obj_token: OXdHdCAVJoc8vCx8NkvcKnayngc