获取手机的唯一标识

这篇博客探讨了在Android设备上获取唯一标识的5种方法:IMEI(需要权限)、Pseudo_Unique ID(适用于无通话功能设备)、Android ID(可变且可能为空)、WLAN MAC Address(可能被伪造)和BT MAC Address(需要蓝牙权限)。尽管存在各种限制,但通过组合这些标识或计算其MD5值,可以生成一个32位的16进制唯一设备ID。

1.the imei:这个只是对Android手机有效

 TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String szImei = TelephonyMgr.getDeviceId(); 

运用这个方法,需要在mainfset里面加入一个许可,android.permission.READ_PHONE_STATE

2.Pseudo_Unique ID

有时候,一些没有通话功能的平板电脑,,或者你不愿意加入READ_PHONE_STATE许可,如果要获取唯一序列号之类的东西,可以用builder类
String szDevID="35"+
Build.BOARD.length()%10+
Build.BRAND.length()%10+
Build.CPU_ABI.length()%10+
Build.DEVICE.length()%10+
Build.DISPLAY.length()%10+
Build.HOST.length()%10+
Build.ID.length()%10+
Build.MANUFACTURE.length()%10+
Build.MODEL.length()%10+
Build.PRODUCT.length()%10 +
Build.TAGS.length()%10 +
Build.TYPE.length()%10 +
Build.USER.length()%10 ;

这样一共13个数字,并且在前面加上”35”.这样看起来就和15个IMEI一样了.

### UniApp 中获取手机唯一标识符的方法 在 UniApp 中,获取手机唯一标识符是一个常见的需求,尤其是在涉及用户身份验证或设备绑定的情况下。然而,由于 Android 平台对隐私保护的加强,特别是从 Android 10 (API Level 29) 开始,许多传统的方式(如 IMEI 和 MAC 地址)已被限制访问[^1]。 以下是几种可行的解决方案: #### 使用 OAID OAID 是一种由 Google 推荐的匿名化设备标识符,适用于大多数现代 Android 设备。可以通过 `plus.device.getOAID` 方法来获取该标识符: ```javascript plus.device.getOAID({ success: function(e) { console.log('getOAID success: ' + JSON.stringify(e)); }, fail: function(e) { console.log('getOAID failed: ' + JSON.stringify(e)); } }); ``` 注意:并非所有设备都支持 OAID,因此需要做好失败情况下的处理逻辑[^2]。 #### 获取 Device Info 对于某些场景,可以尝试通过 `plus.device.getInfo` 来获取设备信息。不过需要注意的是,在 Android 10 或更高版本上,IMEI 字段可能为空,此时建议改用 UUID: ```javascript plus.device.getInfo({ success: function(e) { console.log('getDeviceInfo success: ' + JSON.stringify(e)); if (!e.imei || e.imei === '') { console.log('Using UUID as device identifier'); console.log('UUID:', plus.device.uuid); } else { console.log('IMEI:', e.imei); } }, fail: function(e) { console.log('getDeviceInfo failed: ' + JSON.stringify(e)); } }); ``` 这里提到的 `plus.device.uuid` 提供了一个较为稳定的设备标识符,但在应用卸载重装后可能会发生变化[^4]。 #### 利用 Android_ID 如果希望获得一个更加持久化的标识符,则可以考虑使用 Android 的 `Settings.Secure.ANDROID_ID`。这种方法依赖于原生插件的支持,并且即使应用被重新安装也不会改变: ```javascript function get_AndroidId() { plus.android.importClass("android.provider.Settings"); const context = plus.android.runtimeMainActivity().getApplicationContext(); const androidId = plus.android.invoke( "android.provider.Settings$Secure", "getString", context.getContentResolver(), "android_id" ); console.log("Android ID:", androidId); return androidId; } ``` 上述代码片段展示了如何借助 Plus API 实现这一功能[^3]。 尽管有多种方式可供选择,开发者仍需权衡每种方案的优点与局限性,同时遵循平台政策以保障用户体验和个人数据安全。 问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值