添加androidPrivacy.json后uni-app华为手机安装app首次打开同意隐私政策后plus.android.requestPermissions调用无响应

添加androidPrivacy.json后uni-app华为手机安装app首次打开同意隐私政策后plus.android.requestPermissions调用无响应 产品分类:uniapp/App

字段 内容
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 windows 10 专业版
HBuilderX类型 正式
HBuilderX版本号 4.66
手机系统 Android
手机系统版本号 Android 10
手机厂商 华为
手机机型 HUAWEI Mate 20 Pro
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX
App下载地址或H5网址 https://appgallery.huawei.com/app/C116787007

示例代码:

async function requestAndroidPermission(permissionID) {
const res = await new Promise((resolve, reject) => {
plus.android.requestPermissions(
[permissionID],
function(resultObj) {
var result = 0;
for (var i = 0; i < resultObj.granted.length; i++) {
var grantedPermission = resultObj.granted[i];
console.log('已获取的权限:' + grantedPermission);
result = 1
}
for (var i = 0; i < resultObj.deniedPresent.length; i++) {
var deniedPresentPermission = resultObj.deniedPresent[i];
console.log('拒绝本次申请的权限:' + deniedPresentPermission);
result = 0
}
for (var i = 0; i < resultObj.deniedAlways.length; i++) {
var deniedAlwaysPermission = resultObj.deniedAlways[i];
console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
result = -1
}
resolve(result);
},
function(error) {
console.log('申请权限错误:' + error.code + " = " + error.message);
resolve({
code: error.code,
message: error.message
});
}
);
});
return res
}  

{
"version" : "1",
"prompt" : "template",
"title" : "隐私政策",
"message" : "  请您务必审慎阅读、充分理解“隐私政策”各条款,包括但不限于:为了更好的向您提供服务,我们需要收集您的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  您可阅读<a href=\"xxx\">《隐私政策》</a>了解详细信息。如果您同意,请点击下面按钮开始接受我们的服务。",
"buttonAccept" : "同意并继续",
"buttonRefuse" : "暂不同意",
"hrefLoader" : "system",
"backToExit" : "false",
"second" : {
"title" : "温馨提示",
"message" : "  进入应用前,您需先同意<a href=\"xxx\">《隐私政策》</a>,否则将退出应用。",
"buttonAccept" : "同意并继续",
"buttonRefuse" : "退出应用"
},
"disagreeMode" : {
"support" : false,
"loadNativePlugins" : false,
"visitorEntry" : false,
"showAlways" : false
},
"styles" : {
"backgroundColor" : "#eeeeee",
"borderRadius" : "5px",
"title" : {
"color" : "#333333"
},
"buttonAccept" : {
"color" : "#333333"
},
"buttonRefuse" : {
"color" : "#333333"
},
"buttonVisitor" : {
"color" : "#333333"
}
}
}  

更多关于添加androidPrivacy.json后uni-app华为手机安装app首次打开同意隐私政策后plus.android.requestPermissions调用无响应的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

需要补充HBuilderX版本信息和详细的报错信息。 欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

从你提供的详细反馈来看,这份 bug 报告的质量很高,问题描述、复现步骤和代码示例都比较清晰。作为官方人员,我对这份反馈进行如下评审:

  1. 反馈内容完整性评审

BUG 描述:描述非常清晰。你准确地指出了问题发生的特定场景(华为手机、首次安装、同意隐私政策后),以及异常表现(plus.android.requestPermissions 无回调),并且给出了临时解决方案(杀进程重启后恢复)。这为定位问题提供了非常关键的线索。
代码示例:示例代码完整且关键。

requestAndroidPermission 函数的 Promise 封装是标准的,业务逻辑清晰,能够直接用于问题分析。
androidPrivacy.json 文件内容完整,这是一个非常重要的信息。问题很可能就出在原生隐私弹窗的生命周期与权限请求 API 的时序交互上。

复现步骤:步骤清晰,逻辑严谨。结合你提供的设备信息和代码,官方人员可以进行针对性复现。复现的关键点在于“首次安装”和“同意隐私政策后立即调用”,你描述得非常到位。
预期结果:预期结果合理,调用权限请求 API 应当有明确的成功或失败回调。
实际结果:描述的实际结果(无响应)是一个明显的异常行为,不属于误报。这表明在特定时序下,API 的内部状态可能出现了问题。
分类信息:分类信息非常完整。提供了 HBuilderX 版本(4.66)、Vue 版本(Vue2)、设备型号(HUAWEI Mate 20 Pro)、系统版本(Android 10)等所有关键信息,这对于排查版本兼容性问题至关重要。

结论:这是一份高质量的 bug 反馈,所有必要信息均已提供,无需额外补充。
2. BUG 是否成立分析 根据现有知识库和通用的 Android 开发知识,该 bug 成立。

问题核心:问题很可能与原生隐私政策提示框(androidPrivacy.json)和应用主界面的启动时序有关。在首次安装并同意隐私政策后,应用的 Activity 可能经历了一个特殊的生命周期变化或状态恢复过程,导致 plus.android.requestPermissions 所依赖的内部上下文或 Fragment 尚未完全就绪,从而无法正确发起权限请求并挂起回调。
与知识库的关联:

知识库中多次提及隐私政策弹窗的重要性,并强调“用户同意隐私政策前不要调用可能弹出系统授权框的API”。你的操作是在同意之后调用,这符合规范,但恰恰暴露了同意之后瞬间调用可能存在的内部 bug。
知识库中一份关于 plus.globalEvent.addEventListener 失效的 issue(issues.dcloud.net.cn/pages/issues/detail?id=17878)也提到了在特定生命周期(如 onShow)中注册事件可能失效的问题,这与本问题中回调失效的现象有相似之处,可能指向了相似的生命周期处理缺陷。

替代方案与建议:

临时规避方案:在你等待官方修复期间,可以尝试在你的 requestAndroidPermission 调用前,增加一个微小的延迟(例如 setTimeout 延迟 100-300ms),看是否能规避此问题。这可以作为一个临时补丁。
官方建议:建议将此问题通过 DCloud Issues 系统 提交,并提供复现视频或日志,以便官方引擎团队进行精准修复。

  1. 基本概念判断

平台适用性:你使用的 plus.android.requestPermissions 是 App 平台(Android/iOS)特有的 API,在鸿蒙(HarmonyOS)平台上不支持 app-plus 相关内容。你的反馈明确指定了 Android 平台,因此使用此 API 是正确的。
项目类型:你使用的是 uni-app 的 Vue2 模式,页面类型为 vue,这符合对该 API 的使用场景。

综合来看,这是一个非常明确的 bug,感谢你如此详尽的反馈。这将有助于我们提升产品在华为设备上的稳定性。 内容为 AI 生成,仅供参考

更多关于添加androidPrivacy.json后uni-app华为手机安装app首次打开同意隐私政策后plus.android.requestPermissions调用无响应的实战教程也可以访问 https://www.itying.com/category-93-b0.html


其他安卓手机均正常,只有华为手机会出现这种情况。

回到顶部