uni-app上架自动化检测环节识别到APP内存在隐私违规问题,当前是授权前获取和申请电话权限的问题
uni-app上架自动化检测环节识别到APP内存在隐私违规问题,当前是授权前获取和申请电话权限的问题
违规动作:action=android.permission.READ_PHONE_STATE_SERIALNO,
违规详情:content=JAVA反射读取Build.SERAIL, callstack:java.lang.Class.getField:1605;io.dcloud.e.f.a$b.f:1;io.dcloud.e.f.a$b.e:6;io.dcloud.e.f.a$b.<clinit>:1;io.dcloud.e.f.a$b.b:1;io.dcloud.e.f.a.a:65;io.dcloud.e.f.a.a:22;io.dcloud.e.f.b.a:10;io.dcloud.e.f.b.<init>:6;io.dcloud.e.f.b.a:4;io.dcloud.feature.gg.dcloud.AolFeatureImpl.doForFeature:136;io.dcloud.feature.gg.AolFeatureImplMgr.doForFeature:5;io.dcloud.a.a:16;io.dcloud.b$a.run:5;android.os.Handler.handleCallback:873;android.os.Handler.dispatchMessage:99;android.os.Looper.loop:193;android.app.ActivityThread.main:7175;java.lang.reflect.Method.invoke:-2;com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run:493;com.android.internal.os.ZygoteInit.main:858;
代码里并没有获取和申请电话权限,不知道问题出在哪里。
在处理uni-app上架时遇到的隐私违规问题,特别是授权前获取和申请电话权限的问题,我们需要确保应用在用户明确授权之前不会尝试访问这些敏感信息。以下是一个关于如何在uni-app中正确处理电话权限申请的代码示例,以确保符合隐私政策要求。
1. 修改manifest.json配置
首先,在manifest.json
文件中,确保已经声明了所需的权限。对于电话权限,通常涉及android.permission.READ_PHONE_STATE
和android.permission.CALL_PHONE
等(注意:具体权限需根据业务需求调整,且应最小化权限申请)。
"app-plus": {
"distribute": {
"android": {
"permissions": [
"android.permission.READ_PHONE_STATE",
"android.permission.CALL_PHONE"
// 其他权限...
]
}
}
}
2. 动态申请权限
在uni-app中,应避免在应用启动时立即申请权限,而是在需要使用相关功能时才申请。以下是一个在需要拨打电话时申请CALL_PHONE
权限的示例:
// 检查并申请CALL_PHONE权限
function requestCallPhonePermission() {
#ifdef APP-PLUS
plus.android.requestPermissions(
['android.permission.CALL_PHONE'],
function(event) {
if (event.deniedAlways.length > 0 || event.denied.length > 0) {
console.error('CALL_PHONE permission denied');
// 处理权限被拒绝的情况
} else {
console.log('CALL_PHONE permission granted');
// 执行拨打电话的操作
makePhoneCall();
}
}
);
#endif
}
// 拨打电话的函数
function makePhoneCall() {
#ifdef APP-PLUS
plus.device.dial('1234567890', function() {
console.log('Dialing completed');
}, function(e) {
console.error('Dialing failed: ' + e.message);
});
#endif
}
// 在需要拨打电话的地方调用requestCallPhonePermission
// 例如,在某个按钮点击事件中
document.getElementById('callButton').addEventListener('click', requestCallPhonePermission);
3. 用户隐私政策提示
在应用内添加隐私政策提示,明确告知用户为何需要这些权限,并引导用户阅读隐私政策。这通常在应用首次启动或相关功能页面展示。
总结
通过上述步骤,我们可以确保uni-app在处理电话权限时遵循隐私政策要求,避免在授权前获取和申请电话权限的问题。这包括在manifest.json
中声明权限、动态申请权限以及提供用户隐私政策提示。这样的处理方式有助于提升应用的合规性,减少上架时遇到的隐私违规问题。