谁知道怎样,在HarmonyOS鸿蒙Next中解决提前向用户弹窗申请开启【读取已安装应用列表】权限问题?

谁知道怎样,在HarmonyOS鸿蒙Next中解决提前向用户弹窗申请开启【读取已安装应用列表】权限问题?

  1. 您的应用首次运行时,在展示使用权限对应的相关产品或服务之前,提前向用户弹窗申请开启【读取已安装应用列表】权限,不符合华为应用市场审核标准。

您的应用内广告存在弹出后无法立即关闭的问题,不符合华为应用市场审核标准。

修改建议:请参考测试结果进行修改,提供可直接关闭应用内广告的功能。

请参考《审核指南》第5.4相关审核要求:https://developer.huawei.com/consumer/cn/doc/50104

测试环境:Wi-Fi联网、HarmonyOS 3.1.0 (HUAWEI P60)、中文环境。 如有疑问,可直接回复本条通知进行咨询

近段时间,发现很多人被下架,原因都是 【读取已安装应用列表】

app应用并没有加入

android.permission.QUERY_ALL_PACKAGES

android.permission.GET_INSTALLED_APPS

有谁知道为什么有这样的提示,网上也有很多人提出这样的问题,但没有解决方案?

目前已知

HarmonyOS 3.1.0 会有可能弹出提示(只认为有可能,但没实机验证,希望有这个版本的人 帮忙测试)

HarmonyOS 3.0.0 ,不会提示,(用云手机多台机测试过)

安卓10,11,12,13,14 也不会提示(用云手机多台机测试过)

我的应用 加入了 华为支付,及华为升级,华为审核用在 HarmonyOS 3.1.0 ,就告知违规【读取已安装应用列表】

我的另一个应用 没加入的,华为审核用在 HarmonyOS 3.1.0,并没说违规,最少上线了

有人说 去掉huawei push删掉 ,但我的应用也没有这个

有没有人知道怎样解决??


更多关于谁知道怎样,在HarmonyOS鸿蒙Next中解决提前向用户弹窗申请开启【读取已安装应用列表】权限问题?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

15 回复
  1. 我也遇到过,坑了我好长时间。
  2. 检查下自己的代码 或者 第三方依赖库 。
  3. 我发现极光认证 和 华为 push 低版本 会有获取情况 , 升级高版本就可以了 。

更多关于谁知道怎样,在HarmonyOS鸿蒙Next中解决提前向用户弹窗申请开启【读取已安装应用列表】权限问题?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


把华为的push删除后,也不行,还是提示,可能要找到HarmonyOS 3.1.0,一个个排除,难道为了这个问题,要专门买台手机,唉!!,

  1. 检查范围就在弹窗前后集成或者初始化那些第三方sdk慢慢检查。
  2. 华为P60 mate50Pro机型会提示。
  3. 不用买手机,华为DevEco Service 按道理是有一定免费时间测试,就看你找不找的到。

问题已排除,是穿山甲问题,搞了几天,原来大神居然不用申请

android.permission.QUERY_ALL_PACKAGES

android.permission.GET_INSTALLED_APPS

也可获取得到安装列表权限,那还要这个声明权限有什么用,排查真累,差点就买了台同型号手机来排查。

那最后是怎么处理的呢?

怎么解决的啊?

广告SDK

关了就可以了,

cke_137.png

华为推送的问题 自己的SDK 给别人造坑

我们也遇到这个问题,但问题是我们确实需要使用这个权限,但这个权限如何获取用户是否授权,和主动授权。

问题核心不是能不能申请,而是申请时机要在用户走完隐私政策之后,一般建议在使用相关功能时弹出申请即可。申请方式看指南文档安全部分下面的访问控制,把几个示例拼凑一下勉强通用:)

你是没有,但是你引用的第三方的会,只是你不知道而言,一个个引用排查吧,我也是这样排查出来的,排查时单单看权限申请 是不够的,只要某个库执行了源码也会提示,即使没申请权限 也会的。

调用packageManager .getInstalledApplications这种也会弹窗申请权限的,不需要申请那两个权限。

你那个防页面劫持不是也需要获取这些调用getInstalledApplications做判断的,那肯定要到权限。一个审核说页面劫持风险,一个又说获取列表权限。无语管家了,能不能一个人说了算呀。

在HarmonyOS鸿蒙Next中,解决提前向用户弹窗申请开启【读取已安装应用列表】权限的问题,可以通过以下步骤实现:

  1. 权限声明:首先在config.json文件中声明ohos.permission.GET_BUNDLE_INFO权限。该权限用于读取已安装应用列表。

    {
      "module": {
        "reqPermissions": [
          {
            "name": "ohos.permission.GET_BUNDLE_INFO",
            "reason": "读取已安装应用列表"
          }
        ]
      }
    }
    
  2. 动态权限申请:在应用启动时或需要读取应用列表的地方,动态申请权限。使用abilityContext.requestPermissionsFromUser方法向用户弹窗申请权限。

    import abilityAccessCtrl from '[@ohos](/user/ohos).abilityAccessCtrl';
    
    let context = ...; // 获取当前Ability的Context
    let permissions = ['ohos.permission.GET_BUNDLE_INFO'];
    let atManager = abilityAccessCtrl.createAtManager();
    
    atManager.requestPermissionsFromUser(context, permissions, (err, data) => {
      if (err) {
        console.error(`Failed to request permissions. Error: ${err}`);
      } else {
        console.log(`Permissions granted: ${data.permissions}`);
      }
    });
    
  3. 权限检查:在申请权限前,先检查是否已经拥有该权限。如果已经拥有,则不需要再次申请。

    let context = ...; // 获取当前Ability的Context
    let atManager = abilityAccessCtrl.createAtManager();
    
    atManager.verifyAccessToken('ohos.permission.GET_BUNDLE_INFO').then((result) => {
      if (result === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {
        console.log('Permission already granted');
      } else {
        console.log('Permission not granted, requesting permission');
        // 调用动态权限申请代码
      }
    });
    

通过以上步骤,可以在HarmonyOS鸿蒙Next中实现提前向用户弹窗申请开启【读取已安装应用列表】权限的功能。

在HarmonyOS鸿蒙Next中,若需提前向用户弹窗申请开启【读取已安装应用列表】权限,可通过以下步骤实现:

  1. 权限声明:在config.json文件中声明ohos.permission.GET_BUNDLE_INFO权限。
  2. 动态申请:在应用启动时,使用requestPermissionsFromUser方法动态申请权限。
  3. 弹窗提示:在申请权限前,通过自定义弹窗向用户解释权限用途,提升用户体验。
  4. 权限检查:使用canRequestPermission方法检查是否已授权,避免重复申请。

确保遵循最小权限原则,仅在必要时申请权限。

回到顶部