DCloud_App_Array
DCloud_App_Array
  • 发布:2019-06-28 16:17
  • 更新:2024-02-27 17:15
  • 阅读:47629

获取设备信息(imei、imsi、uuid)的调整使用plus.device.getInfo方法的说明

分类:HTML5+

本功能自HBuilderX 2.0.3+起支持

Android平台各大应用商店已经要求API等级(targetSdkVersion)为26或以上。高版本Android系统完善了授权系统,获取设备信息(如imei)需要经过用户授权确认,弹出获取设备信息的授权提示框:

如果不在manifest里指定,HBuilder的打包默认targetSdkVersion是21,而HBuilderX已经是26了。targetSdkVersion变高就会引发动态权限问题。

目前5+ API获取设备信息是通过以下属性方式读取

为了保证以上属性可用,应用需在启动时进行初始化赋值,原生层这时候就需要申请获取设备信息权限读取imei、imsi等信息。
即使应用没有调用以上API,应用启动时仍然执行此初始化赋值逻辑,导致应用启动时弹出上图所示的设备信息授权提示框。

为了避免应用启动时弹出设备信息授权提示框,新增**plus.device.getInfo方法。当应用需要获取设备信息时调用此API,才会触发弹出授权提示框,不获取设备信息就不会弹出设备信息授权提示框。
** 建议使用5+ API的属性方式获取imei、imsi、uuid信息的代码调整使用plus.device.getInfo方法

至于属性和方法的区别,可能普通程序员看不懂,但做底层的会知道,属性就是启动时就必须初始化的。

原来的plus.device.imei、plus.device.imsi、plus.device.uuid等属性方式的API不推荐使用,后续会逐步废弃。
为了保证向下兼容,目前还可以使用,但不一定可以获取到正确的值。
取决于应用启动前是否已经获取设备信息权限:

  1. 如果应用启动前没有获取设备信息授权(询问或拒绝状态),则无法获取设备信息,按权限被拒绝的逻辑处理。
  2. 如果应用获取设备信息授权,则可以获取设备信息。

** 注意:调用plus.device.imei、plus.device.imsi、plus.device.uuid不会触发授权提示框 **

0 关注 分享

要回复文章请先登录注册

2***@qq.com

2***@qq.com

请问这个可以获取IOS的IDFA么
2019-08-20 17:46
3***@qq.com

3***@qq.com

回复 3***@qq.com :
特意写了个文章 看看吧 http://ask.dcloud.net.cn/article/36265
2019-08-15 09:42
3***@qq.com

3***@qq.com

回复 3***@qq.com :
我的问题跟你的一样 能详细说下怎么解决吗?谢谢
2019-08-15 09:13
3***@qq.com

3***@qq.com

回复 5***@qq.com :
解决了 写在他的里面 等他回调才行,不能直接赋值变量
2019-08-13 10:42
5***@qq.com

5***@qq.com

回复 3***@qq.com :
老哥,这个问题你解决了吗
2019-08-07 10:50
3***@qq.com

3***@qq.com

更新后安卓456都获取不到imei
2019-08-01 10:31
3***@qq.com

3***@qq.com

回复 老哥教教我 :
你是本来就有这个权限吧 我是打包的时候默认就没有勾选获取设备信息,然后里面点了允许 获取不到值,必须关闭APP 再打开 才能获取imei ,你试试你关闭这个权限 然后打开获取看看
2019-07-25 12:46
老哥教教我

老哥教教我

回复 3***@qq.com :
没出现你的问题,不会吧,不行弄个循环获取
2019-07-25 12:40
3***@qq.com

3***@qq.com

回复 DCloud_heavensoft :
plus.device.getInfo 第一次使用的时候 点允许后必须重启APP才能获取到imei的值,不重启获取不了 这个是什么原因,必须重启APP的时候才会加载原生的api吗
2019-07-25 12:20
3***@qq.com

3***@qq.com

plus.device.getInfo 第一次使用的时候 点允许后必须重启APP才能获取到imei的值,不重启获取不了 这个是什么原因,必须重启APP的时候才会加载原生的api吗
2019-07-25 12:19