uni-app中permissionExternalStorage和permissionPhoneState权限已设为none,打包后安装华为手机首次进入App仍申请权限,致华为无法上线
uni-app中permissionExternalStorage和permissionPhoneState权限已设为none,打包后安装华为手机首次进入App仍申请权限,致华为无法上线
操作步骤:
- 安装andriod就会复现
预期结果:
- 首次进入app不会申请权限
实际结果:
- 本地运行测试不会申请权限,打包安装后首次进入app会申请权限
bug描述:
您好,uniapp andriod permissionExternalStorage和permissionPhoneState 权限已经设置为none,本地运行(华为手机)测试没有问题,打包后安装(华为手机)首次进入App还是会申请权限,请您帮助我解决一下
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC操作系统版本 | 14.2.1 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 3.99 |
手机系统 | Android |
手机系统版本 | Android 14 |
手机厂商 | 华为 |
手机机型 | p30 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
首先确定是否有手动调用触发申请权限的API,如uni.getDeviceInfo,或者调用其它原生插件申请了权限。
你使用标准基座真机运行没有问题,很大可能是使用了原生插件导致,建议去掉其它插件重新云端打包后再验证。
1.手动调用触发申请权限的API之前都会先弹自定义弹窗,用户同意后才会申请权限API 2.没有用到uni.getDeviceInfo,只用到了getSystemInfoSync和getSystemInfo,原生插件用了阿里云的实人认证,但是我也删除打包测试过,依旧不行 3.我用的是自定义基座运行测试
我也直接建了一个新项目,配置permissionExternalStorage和permissionPhoneState为none后依旧会弹出权限框
请问您看了安装包了吗?
这是新建的项目和我需要华为审核的项目
提供你第一张截图的uni-app项目工程和安装包。
请上传可复现的新建项目已经自定义基座包apk。
请问从哪里上传
回复 2***@qq.com: 帖子可上传附件,或者提供下载链接地址。
回复 DCloud_App_Array: https://site.shenghuoxiang.com/download,电脑可直接下载,手机需要浏览器扫描二维码才可下载
回复 2***@qq.com: 你发的是正式项目安装包,测试没有复现进入后申请获取设备信息的权限框。只有申请定位的申请框,此权限明显是你的业务代码调用定位功能引起的。(在业务上已经弹出了提示框)
我也遇到了同样的问题,是否解决?
低版本安卓系统的手机就会这样,安卓版本7.1.2的vivo就是这样
弹出的是申请什么权限的提示框?
我的手机都会,不分高低版本
回复 DCloud_App_Array: 提示需要获取手机设备的权限,但是别的高版本的不会这样,小米手机不这样,不知道怎么去解决、
回复 2***@qq.com: 你好这位同学,解决了没
回复 7***@qq.com: 没有
我也是 设置 none 还是弹 ,影响华为上架,
设置 none 还是弹 作者解决了吗?
在 uni-app
中,如果你已经将 permissionExternalStorage
和 permissionPhoneState
权限设置为 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_STATE
和 WRITE_EXTERNAL_STORAGE
)。即使你在 manifest.json
中禁用了这些权限,华为应用市场仍然可能会检测到这些权限的存在。
-
解决方案:你可以尝试在
AndroidManifest.xml
中彻底移除这些权限的声明。在uni-app
中,你可以通过自定义AndroidManifest.xml
来实现这一点。具体步骤如下:-
在项目的
nativeplugins
目录下创建一个自定义的AndroidManifest.xml
文件。 -
在该文件中移除或注释掉相关的权限声明。例如:
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" /> --> <!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> -->
-