asdf211
asdf211
  • 发布:2025-05-12 15:04
  • 更新:2025-07-30 11:46
  • 阅读:224

小米应用市场被拒:APP未使用相关功能时,提前申请电话权限

分类:uni-app

申请上架小米市场时,被拒,提示如下:
改进建议: APP业务功能所需的权限最好在对应业务功能执行时动态申请,在用户未触发相关业务功能时,不提前申请与当前业务功能无关的权限。
风险信息: APP首次打开,未见使用权限对应的相关产品或服务时,提前向用户弹窗申请开启电话权限。
举证信息: 2025-05-12
[测试动作] 启动史宾格隐私合规检测
APP未使用相关功能时,提前申请电话权限


如上图,我自己安装到小米手机上,只有点击该页面右侧漂浮的第二个电话图标时,才会提示申请拔打电话的权限。

我的uniapp代码大致如下:
1、store/modules/config.js
拔打电话的动作统一放在mutations

mutations:{  
ServiceAction(state,types){//客服响应  
            if(types==''||types==undefined||types=='phone'){  
                let webinfo=uni.getStorageSync('webInfo');  
                if(webinfo){  
                    let phone=webinfo[0].ts_config_tel;  
                    uni.makePhoneCall({  
                        phoneNumber: ''+phone+''  
                    });  
                }  
            }  
            else if(types==='weixin'){  
                console.log('serviceweixin')  
            }else if(types==='qq'){  
                console.log('serviceQQ')  
            }  
        }  
}

2、components/common/sideicon.vue
漂浮按钮做成组件,供多个页面调用。组件中点击图标时,调用mutations拔打电话。
<image src='/wx/images/icon_tel.png' @tap='call_phone'></image>

export default {  
        data() {  
            return {  

            }  
        },  
        methods: {  
            ...mapMutations(['ServiceAction']),  
            ,call_phone(){  
                this.ServiceAction("phone");  
            }  
        }  
    }

3、product.vue
页面直接引用sideicon.vue组件:
<SideIcon></SideIcon>


  • 云打包时,额外添加的权限下如:
  • <uses-feature android:name="android.hardware.camera"/>
    <uses-feature android:name="android.hardware.camera.autofocus"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.FLASHLIGHT"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.READ_LOGS"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    =============
    并把permissionExternalStorage和permissionPhoneState设置为none,如下图

===========================================
自己排查了好几次,并没有发现在页面加载的情况下去启动拔打用户电话的动作,不知是哪里出了问题。
安装到自己手机上,运行小米检测报告中的页面,也只有点击图标后才会出现拔打电话的申请权限,其它情况下并未发现异常情况。
请教大家,我该如何解决?感谢大家

2025-05-12 15:04 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com - 1085613294@qq.com

解决疑难杂症,付费解决问题

8***@qq.com

8***@qq.com

大佬解决了吗,我也遇到这个问题了

  • asdf211 (作者)

    没有。尝试多种方法,都不行

    2025-07-29 20:42

  • 8***@qq.com

    回复 asdf211: 那不是没有上架了?

    2025-07-30 09:34

  • asdf211 (作者)

    回复 8***@qq.com: 把拔打电话和定位的先取消,上架。正在尝试解决。发私信,加个Q好友吧。交流看看

    2025-07-30 09:49

  • 8***@qq.com

    回复 asdf211: 我找到解决方案了,不过我的应用只上架安卓市场,不上IOS

    2025-07-30 11:44

  • 8***@qq.com

    回复 asdf211: 代码我下面贴出来

    2025-07-30 11:44

  • 8***@qq.com

    回复 asdf211: 我的只报了拨打电话权限,定位权限你需要再研究一下

    2025-07-30 11:47

8***@qq.com

8***@qq.com

    if (plus && plus.android) {  
        let main = plus.android.runtimeMainActivity();  
        // console.log('main:', main);  

        let Intent = plus.android.importClass('android.content.Intent');  
        let Uri = plus.android.importClass('android.net.Uri');  

        let intent = new Intent(Intent.ACTION_DIAL);  
        let uri = Uri.parse('tel:' + servicePhone);  
        intent.setData(uri);  

        // console.log('intent:', intent);  

        try {  
            main.startActivity(intent);  
            // console.log('startActivity success');  
        } catch (e) {  
            // console.error('startActivity failed:', e);  
            this.$util.Tips({  
                title: '无法启动拨号盘,请稍后再试',  
                icon: 'none'  
            });  
        }  

使用Intent.ACTION DIAL通过startActivity拉起系统拨号盘的方式进行拨号,把权限CALL_PHONE 删除

  • asdf211 (作者)

    非常感谢,我尝试一下。早上刚新开一个帖子

    2025-07-30 11:50

要回复问题请先登录注册