uni-app 小米9获取imei为空

uni-app 小米9获取imei为空

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

[内容]

重现步骤

小米9在开启权限的情况下获取uuid、imei等设备信息失败

[步骤]
离线打包安装成功后打开应用获取设备信息失败

[结果]
获取imei为空、uuid为一串字母数字组合的字符串
[期望]
获取imei、uuid成功
[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]
HBuilder X
[IDE版本号]
2.4.2.20191115
[windows版本号]
windows 10
[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]

[运行端版本号]

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]

[编译模式是老模板模式还是新的自定义组件模式?]

App运行环境说明

[Android版本号]
Android 10
[iOS版本号]

[手机型号]
小米9
[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

if(mui.os.ios){
    plus.navigator.setFullscreen(false);
    userInfo.setItem('mbUUID', plus.device.uuid);
}else{
    plus.device.getInfo({
        success:function(e){
            userInfo.setItem('mbUUID', e.uuid);
            alert("成功设备uuid:"+JSON.stringify(e));
            console.log("保存的设备uuid:"+userInfo.getItem("mbUUID"));
        },
        fail:function(e){
            userInfo.setItem('mbUUID', e.uuid);
            alert("失败设备uuid:"+JSON.stringify(e));
            console.log("保存的设备uuid:"+userInfo.getItem("mbUUID"));
        }
    });
}



联系方式

[QQ]


更多关于uni-app 小米9获取imei为空的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

Android10自身就没有imei api。改用oaid,仔细看plus.devide的文档

更多关于uni-app 小米9获取imei为空的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据你描述的情况,在小米9上获取IMEI为空的问题,这是Android系统的正常行为。从Android 10开始,Google加强了对设备标识符的限制:

  1. IMEI获取限制:Android 10及以上版本,普通应用已无法获取IMEI等持久性设备标识符,这是Google的隐私政策要求。

  2. UUID问题:plus.device.uuid返回的是应用实例ID,每次安装都会变化,不是真正的设备UUID。

解决方案建议:

  1. 对于设备唯一标识,可以使用plus.device.getOAID()获取OAID(适用于国内厂商设备),需要集成移动安全联盟的SDK。

  2. 检查是否添加了必要权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  1. 对于Android 10+设备,可以考虑使用ANDROID_ID作为替代标识符:
let ANDROID_ID = plus.android.invoke('android.provider.Settings$Secure', 'getString', 
    plus.android.currentContext().getContentResolver(), 
    'android_id');
回到顶部