1***@163.com
1***@163.com
  • 发布:2026-05-26 20:31
  • 更新:2026-05-26 20:31
  • 阅读:29

Android App 未同意隐私协议前 DCloud 原生层触发 ADHandler.SplashAdIsEnable 并读取 AdEnable.dat

分类:uni-app

问题描述

uni-app Android App 在用户未同意隐私协议前,进入游客模式/基础功能模式或关闭启动页时,DCloud 原生层会触发广告开屏相关检查:

io.dcloud.feature.gg.dcloud.ADHandler.SplashAdIsEnable

同时会读取/写入外部存储路径:

/storage/emulated/0/Android/data/cn.bd.dt/cache/AdEnable.dat

合规检测工具将其识别为隐私同意前读取 SDCard / 外部存储行为。

项目业务代码未主动调用广告 SDK,也未主动读取该文件。manifest.json 中已移除 sdkConfigs.ad 配置,并重新云打包、卸载重装后仍可复现。

复现步骤

  1. 使用 HBuilderX 云打包 Android App。
  2. 卸载旧 App,重新安装新包。
  3. 首次启动 App,在未同意隐私协议前,点击游客模式/基础功能模式,或进入首页后关闭启动页。
  4. 使用合规检测工具检测敏感 API 调用。
  5. 检测到 DCloud 原生层调用 Environment.getExternalStorageDirectory,并读取/写入 AdEnable.dat

期望结果

用户未同意隐私协议前,DCloud 原生层不应触发广告/开屏广告相关逻辑,也不应读取或写入外部存储文件。

如果该行为属于 DCloud 基座内部逻辑,请提供关闭 ADHandler.SplashAdIsEnable / AdEnable.dat 检查的配置方式,或修复基座在隐私同意前触发该逻辑的问题。

实际结果

未同意隐私协议前,合规工具抓到如下调用:


敏感函数: android.os.Environment$getExternalStorageDirectory  
堆栈:  
io.dcloud.common.adapter.util.DeviceInfo.initPath  
io.dcloud.a$a.run  
敏感函数: java.io.FileInputStream  
函数参数:  
/storage/emulated/0/Android/data/cn.bd.dt/cache/AdEnable.dat  

堆栈:  
io.dcloud.feature.gg.dcloud.ADHandler.SplashAdIsEnable  
io.dcloud.feature.gg.dcloud.AolFeatureImpl.doForFeature  
io.dcloud.feature.gg.AolFeatureImplMgr.doForFeature  
io.dcloud.WebAppActivity.closeAppStreamSplash
2026-05-26 20:31 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据你提供的堆栈信息,这个问题是 DCloud 基座内部逻辑在隐私协议同意前触发了广告检查,属于已知问题。

问题根因

从堆栈可以看到调用链:

io.dcloud.feature.gg.dcloud.ADHandler.SplashAdIsEnable  
io.dcloud.feature.gg.dcloud.AolFeatureImpl.doForFeature  
io.dcloud.WebAppActivity.closeAppStreamSplash

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

这是在关闭启动页(closeAppStreamSplash)时,基座内部触发了广告开屏功能检查,进而读取/写入了 AdEnable.dat 文件。即使你的项目没有配置 uni-ad、没有写任何广告代码,这个检查逻辑也会执行。

解决方案

这个问题在官方 ISSUE 系统和 ask 社区已有记录,需要在专业群中获取基座修复版本或配置方案

请到 uni-ad 交流群 咨询,群中有相关专业的管理员会协助处理:

uni-ad交流群

同时请确认隐私弹窗配置

确保你的应用使用了 template 模式 的原生隐私政策提示框,这是合规的基础要求。在 manifest.json 中配置:

"app-plus": {  
  "privacy": {  
    "prompt": "template",  
    "template": {  
      "title": "服务协议和隐私政策",  
      "message": "请你务必审慎阅读、充分理解...",  
      "buttonAccept": "同意",  
      "buttonRefuse": "暂不同意"  
    }  
  }  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

详细配置参考:Android平台隐私与政策提示框

补充说明

如果你需要支持用户拒绝隐私协议后仍能使用基础功能(游客模式),可以配置 disagreeMode,参考:未同意隐私政策模式配置

内容为 AI 生成,仅供参考

要回复问题请先登录注册