uni-app中permissionExternalStorage和permissionPhoneState权限已设为none,打包后安装华为手机首次进入App仍申请权限,致华为无法上线

uni-app中permissionExternalStorage和permissionPhoneState权限已设为none,打包后安装华为手机首次进入App仍申请权限,致华为无法上线

操作步骤:

  • 安装andriod就会复现

预期结果:

  • 首次进入app不会申请权限

实际结果:

  • 本地运行测试不会申请权限,打包安装后首次进入app会申请权限

bug描述:

您好,uniapp andriod permissionExternalStorage和permissionPhoneState 权限已经设置为none,本地运行(华为手机)测试没有问题,打包后安装(华为手机)首次进入App还是会申请权限,请您帮助我解决一下

Image

信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Mac
PC操作系统版本 14.2.1
HBuilderX类型 正式
HBuilderX版本 3.99
手机系统 Android
手机系统版本 Android 14
手机厂商 华为
手机机型 p30
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX
21 回复

首先确定是否有手动调用触发申请权限的API,如uni.getDeviceInfo,或者调用其它原生插件申请了权限。 你使用标准基座真机运行没有问题,很大可能是使用了原生插件导致,建议去掉其它插件重新云端打包后再验证。


1.手动调用触发申请权限的API之前都会先弹自定义弹窗,用户同意后才会申请权限API 2.没有用到uni.getDeviceInfo,只用到了getSystemInfoSync和getSystemInfo,原生插件用了阿里云的实人认证,但是我也删除打包测试过,依旧不行 3.我用的是自定义基座运行测试

我也直接建了一个新项目,配置permissionExternalStorage和permissionPhoneState为none后依旧会弹出权限框

请问您看了安装包了吗?

这是新建的项目和我需要华为审核的项目



提供你第一张截图的uni-app项目工程和安装包。

请上传可复现的新建项目已经自定义基座包apk。

请问从哪里上传

回复 2***@qq.com: 帖子可上传附件,或者提供下载链接地址。

回复 2***@qq.com: 你发的是正式项目安装包,测试没有复现进入后申请获取设备信息的权限框。只有申请定位的申请框,此权限明显是你的业务代码调用定位功能引起的。(在业务上已经弹出了提示框)

我也遇到了同样的问题,是否解决?

低版本安卓系统的手机就会这样,安卓版本7.1.2的vivo就是这样

弹出的是申请什么权限的提示框?

我的手机都会,不分高低版本

回复 DCloud_App_Array: 提示需要获取手机设备的权限,但是别的高版本的不会这样,小米手机不这样,不知道怎么去解决、

回复 2***@qq.com: 你好这位同学,解决了没

回复 7***@qq.com: 没有

我也是 设置 none 还是弹 ,影响华为上架,

设置 none 还是弹 作者解决了吗?

uni-app 中,如果你已经将 permissionExternalStoragepermissionPhoneState 权限设置为 none,但在打包后安装到华为手机上时,首次进入应用仍然会申请这些权限,这可能是由于以下几个原因导致的:

1. 检查 manifest.json 配置

确保在 manifest.json 文件中,你已经正确地将这些权限设置为 none。例如:

{
  "app-plus": {
    "permissions": {
      "permissionExternalStorage": "none",
      "permissionPhoneState": "none"
    }
  }
}

如果你使用的是 HBuilderX,可以在 manifest.json源码视图 中直接编辑这些配置。

2. 检查第三方 SDK 或插件

如果你在项目中使用了第三方 SDK 或插件,这些 SDK 或插件可能会自动申请某些权限。即使你在 manifest.json 中禁用了这些权限,SDK 或插件仍然可能会触发权限申请。

  • 解决方案:检查你使用的 SDK 或插件,查看它们的文档,确认它们是否会申请这些权限。如果有必要,可以联系 SDK 或插件的开发者,询问是否有办法禁用这些权限申请。

3. 检查原生代码

如果你在项目中使用了原生代码(如 Android 原生代码),这些代码可能会在应用启动时自动申请权限。

  • 解决方案:检查你的原生代码,确保没有在代码中主动申请这些权限。

4. 华为应用市场的要求

华为应用市场对权限申请有严格的要求,特别是对于敏感权限(如 READ_PHONE_STATEWRITE_EXTERNAL_STORAGE)。即使你在 manifest.json 中禁用了这些权限,华为应用市场仍然可能会检测到这些权限的存在。

  • 解决方案:你可以尝试在 AndroidManifest.xml 中彻底移除这些权限的声明。在 uni-app 中,你可以通过自定义 AndroidManifest.xml 来实现这一点。具体步骤如下:

    1. 在项目的 nativeplugins 目录下创建一个自定义的 AndroidManifest.xml 文件。

    2. 在该文件中移除或注释掉相关的权限声明。例如:

      <!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" /> -->
      <!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> -->
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!