# Android NativePrivacyPlugin 隐私授权相关插件
在打开应用前,安卓合规规范要求必须要有隐私弹窗授权的过程。该隐私授权过程需要在用户同意前,才能允许应用获取相关的隐私信息数据。多端场景提供了配置默认隐私弹窗的能力。但对于
- 需要自定义隐私弹窗的样式和交互
- 需要设置用户拒绝隐私授权后,
仅浏览模式的兜底页面
则需要考虑通过 NativePrivacyPlugin 隐私授权相关插件来实现
# 实例代码
具体可以参考这个项目里的 插件示例privacy-plugin-demo
# 开发流程
# 1.继承 NativePrivacyPluginBase
参考下面代码
package com.donut.xxxx
import android.app.Activity
import android.content.Context
import android.content.Intent
import androidx.core.content.ContextCompat.startActivity
import com.tencent.luggage.wxa.SaaA.plugin.NativePrivacyPluginBase
class PrivacyNativePlugin: NativePrivacyPluginBase() {
private val TAG = "TestNativePrivacyPlugin"
override fun getPluginID(): String {
android.util.Log.e(TAG, "getPluginID")
return BuildConfig.PLUGIN_ID
}
companion object {
private var instance: PrivacyNativePlugin? = null
fun getInstance(): PrivacyNativePlugin {
if (instance == null) {
instance = PrivacyNativePlugin()
}
return instance!!
}
private var currentActivity: Activity? = null
fun setCurrentActivity(activity: Activity) {
currentActivity = activity
}
fun finishCurrentActivity() {
currentActivity?.finish()
}
}
// 展示隐私弹窗,如使用多端默认的,则可以直接调用 super 的
fun showAppPrivacyPopup(context: Context) {
// 只能调用
super.showPrivacyPopup(context)
}
// 获取默认隐私弹窗是否同意结果情况
override fun onPluginPrivacyResult(result: Boolean) {
// 如果插件触发的隐私弹窗用户同意了,则只需要关闭自己的 activiy
if (result === true) {
// 关闭当前的 activity
PrivacyNativePlugin.finishCurrentActivity()
}
}
// 当用户不同意隐私弹窗的时候,展示自己的业务 activity
override fun launchRejectedActivity(context: Context) {
val activityIntent = Intent(context, PrivacyRejectedActivity::class.java);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(context, activityIntent, null);
}
}
# 2.配置接口实现类
在 plugin/src/main/resources/META-INF/services/
目录下新建文件com.tencent.luggage.wxa.SaaA.plugin.NativePrivacyPluginInterface
文件内容配置NativePrivacyPluginInterface
接口实现类的路径,如下图所示
# 3.开始测试
- 查看
DemoApplication
文件(/app/src/main/java/com/tencent/weauth/DemoApplication.kt
) - 确认
SaaAApi.Factory.createApi
函数里 新增privacyPopupCancelWithoutKill = true
的配置,则会设置当用户不同意隐私授权弹窗的时候,打开应用时,会直接打开当前的隐私授权插件,来展示仅浏览模式的兜底页面
# 4.构建插件上传后在云构建时使用
参考 Android 原生插件开发指引的上传章节即可