uni-app 未同意隐私协议弹窗存在创建文件夹行为

uni-app 未同意隐私协议弹窗存在创建文件夹行为

操作步骤:

  • 打开app就出现

预期结果:

  • 未同意隐私不创建文件夹

实际结果:

  • 未同意隐私创建文件夹

bug描述:

  • 未同意隐私协议弹窗,存在创建文件夹行为
    【中风险】 App首次运行时,通过弹窗告知用户收集使用个人信息的行为,但在用户授权同意前存在写存储信息的行为。(违反191号文第三项第一条、164号文第一项第一条)

堆栈信息如下:

  • 发生时间 :2024-01-03 09:55:14 435 索引 :100000007
  • mkdir:/storage/emulated/0/Android/data/****/cache/dcCrashDump
  • 调用SDK:数字天堂封装
  • 调用堆栈:
    • java.io.File.mkdir:1348
    • java.io.File.mkdirs:1379
    • io.dcloud.common.util.NativeCrashManager.initNativeCrash:3
    • io.dcloud.application.DCLoudApplicationImpl.onCreate:7
    • io.dcloud.application.DCloudApplication.onCreate:2
    • android.app.Instrumentation.callApplicationOnCreate:1154
    • android.app.ActivityThread.handleBindApplication:6313
    • android.app.ActivityThread.access$1100:223
    • android.app.ActivityThread$H.handleMessage:1679
    • android.os.Handler.dispatchMessage:106
    • android.os.Looper.loop:193
    • android.app.ActivityThread.main:7168
    • java.lang.reflect.Method.invoke:-2
    • com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run:493
    • com.android.internal.os.ZygoteInit.main:858

image


更多关于uni-app 未同意隐私协议弹窗存在创建文件夹行为的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

问题已经确认,预计下次发版修复。麻烦说明一下检测平台。

更多关于uni-app 未同意隐私协议弹窗存在创建文件夹行为的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 开发中,如果应用在用户未同意隐私协议的情况下就进行了创建文件夹等敏感操作,这可能会违反相关隐私政策和法律法规。为了确保应用合规,建议在用户同意隐私协议之前,避免进行任何可能涉及用户隐私或数据存储的操作。

解决方案

  1. 延迟初始化

    • 在用户同意隐私协议之前,避免执行任何可能涉及文件系统、网络请求、设备信息获取等敏感操作。
    • 可以在应用启动时显示隐私协议弹窗,用户同意后再进行相关初始化操作。
  2. 权限控制

    • 使用 uni-app 提供的权限控制机制,确保在用户未授权的情况下,不会进行相关操作。
    • 例如,使用 uni.authorizeuni.getSetting 来检查用户是否已经授权相关权限。
  3. 代码检查

    • 检查项目中是否有在应用启动时自动创建文件夹的代码,确保这些代码在用户同意隐私协议之后执行。
    • 例如,检查 uni.getFileSystemManager()uni.saveFile 等 API 的使用情况。
  4. 隐私协议弹窗

    • 在应用启动时,首先显示隐私协议弹窗,用户同意后再进行后续操作。
    • 可以使用 uni.showModal 或自定义弹窗组件来实现。

示例代码

// 在应用启动时显示隐私协议弹窗
uni.showModal({
  title: '隐私协议',
  content: '请阅读并同意我们的隐私协议',
  confirmText: '同意',
  cancelText: '拒绝',
  success: (res) => {
    if (res.confirm) {
      // 用户同意隐私协议,进行后续操作
      this.initApp();
    } else {
      // 用户拒绝隐私协议,提示并退出应用
      uni.showToast({
        title: '您需要同意隐私协议才能使用本应用',
        icon: 'none'
      });
      // 可以在这里执行退出应用的操作
    }
  }
});

// 初始化应用
initApp() {
  // 在这里执行创建文件夹等操作
  const fileManager = uni.getFileSystemManager();
  fileManager.mkdir({
    dirPath: 'your/directory/path',
    success: () => {
      console.log('文件夹创建成功');
    },
    fail: (err) => {
      console.error('文件夹创建失败', err);
    }
  });
}
回到顶部