Android开发Android开发经验谈Android开发

Android 设备唯一标识

2019-05-06  本文已影响25人  Code猎人

IMEI

IMEI 国际移动设备身份码 目前GSM/WCDMA/LTE手机终端需要使用IMEI号码,在单卡工程中一个手机号对应一个IMEI号,双卡手机则会对应两个IMEI号,一张是手机卡对应一个。
需要权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

TelephonyManager tm = (TelephonyManager)context.getSystemService(context.TELEPHONY_SERVICE); 
String imei = tm.getDeviceId();

缺点

Mac地址

Mac 指的就是我们设备网卡的唯一设别码,该码全球唯一,一般称为物理地址,硬件地址用来定义设备的位置,硬件标识,刷机和恢复出厂设置不擦除,并且大多数android都有wifi模块

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

一般是指wifi模块或者蓝牙模块的mac地址。

缺点:

Android-Q以后 有新的Api获取mac地址,SDK未开放Api,暂不能测试

图片

Android_Id

在设备首次运行的时候,系统会随机生成一64位的数字,并把这个数值以16进制保存下来,这个16进制的数字就是ANDROID_ID,但是如果手机恢复出厂设置这个值会发生改变,如果设备被root,这个值可以任意改变。

String androidID = Secure.getString(getContentResolver(), Secure.ANDROID_ID);

缺点

Android 8.0 以后

Serial Number, SN(设备序列号)

String SerialNumber = android.os.Build.SERIAL

Android 8.0以前

Android 8.0以后

UUID

UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
每次调用都会生成一个全新的标识符

String uuid =  UUID.randomUUID().toString();

因为每次调用都生成新的,通常使用UUID都会存储下来或者和其它字段拼接使用,CUID库就使用了 uuid来拼接device_id字段

Advertising Id 需要手机支持Google 服务以及引入Google库

Advertising ID(广告ID)是由Google Play服务提供的用户特定的,唯一的,可重置的广告ID,适用于广告用例。如果你应用程序想要使用广告ID,你的设备就必须安装Google Play Service

图片 图片

缺点:

Instance Id 需要手机支持Google 服务以及引入Google库

Instance ID的作用域为创建它的应用,这样可以防止他人利用该标识符跟踪用户在不同应用中的行为。此外,此标识符还可以轻松地进行重置,因为用户可以清除应用数据或重新安装应用后重置。

缺点:

上一篇 下一篇

猜你喜欢

热点阅读