Android设备唯一标识符(适配Android Q)

Android设备唯一标识符(适配Android Q)

 

目录

Android设备唯一标识符(适配Android Q)

一、需求场景

二、Android设备信息

1、DeviceId(IMEI)

2、AndroidId

3、Serial Number

4、Wlan或者蓝牙的MAC地址

5、SIM Serial Number

6、IMSI

三、唯一识别符方案

1、设计原则

2、方案实现


一、需求场景

目前常见的使用场景:

1、标识唯一设备,用于数据统计或者后台服务精准下发

2、用于账号与设备绑定

例如,数据上报到自己的统计服务器;

根据特定用户下发奖励或者其他;

会员账号只能绑定3个设备终端

基于以上需求,我们需要可以获取到当前设备的唯一标识符

二、Android设备信息

1、DeviceId(IMEI)

对于GSM手机来说,DeviceId为IMEI,而对于CDMA手机而言则为MEID,目前国内大部分手机主要是IMEI

IMEI是国际移动设备识别码,即通常说的手机串号,用于标识在移动电话网络中每一部独立的手机等移动通信设备。

(1)获取方式

  /**
     * 获取设备ID,GSM手机为IMEI、CDMA手机为MEID
     *
     * @param context
     * @return
     */
    public static String getDeviceId(Context context) {
        if (context == null) {
            return "";
        }

        try {
            TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            if (PermissionUtils.checkPermissionForApi23(context, Manifest.permission.READ_PHONE_STATE)) {
                return telephonyManager.getDeviceId();
            } else {
                LogUtils.e(TAG, "getDeviceId error: permission denied");
            }
        } catch (Exception e) {
            e.printStackTrace();
            LogUtils.e(TAG, "getDeviceId error: " + e.getMessage());
        }

        return "";
    }

(2)缺点

  • 在Android6.0以及之后,需要动态获取android.permission.READ_PHONE_STATE 权限。因此存在用户拒绝授权的可能,此外首次启动后就上报设备ID时也可能影响启动速度
  • 可能存在获取不到DeviceId的可能,存在返回null或者000000的垃圾数据可能
  • 只对有电话功能的设备有效(无需插卡,但是需要有对应硬件模块)。例如在部分pad上可能无法获取到DeviceId

 

 

2、AndroidId

设备首次启动后系统会随机生成一个64位的数字,用16进制字符串的形式表示,例如:4351daa4516303b3,4351 daa4 5163 03b3

(1)获取方式

/**
 * 获取AndroidId
 *
 * @param context
 * @return
 */
public static String getAndroidId(Context context) {
    if (context == null) {
        return "";
    }

    String androidId = Settings.Secure.getString(context.getContentResolve
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值