uni-app上架自动化检测环节识别到APP内存在隐私违规问题,当前是授权前获取和申请电话权限的问题

发布于 1周前 作者 vueper 来自 Uni-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;

代码里并没有获取和申请电话权限,不知道问题出在哪里。


1 回复

在处理uni-app上架时遇到的隐私违规问题,特别是授权前获取和申请电话权限的问题,我们需要确保应用在用户明确授权之前不会尝试访问这些敏感信息。以下是一个关于如何在uni-app中正确处理电话权限申请的代码示例,以确保符合隐私政策要求。

1. 修改manifest.json配置

首先,在manifest.json文件中,确保已经声明了所需的权限。对于电话权限,通常涉及android.permission.READ_PHONE_STATEandroid.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中声明权限、动态申请权限以及提供用户隐私政策提示。这样的处理方式有助于提升应用的合规性,减少上架时遇到的隐私违规问题。

回到顶部