Android获得设备id的比较全面的方法

做Android项目基本上都是需要获取一些用户数据,比如设备id。但是回顾之前的获取方法,总是不全面,很多机器获取不到,或者山寨机有相同id的可能,这次项目整理了下比较全面的获取方法。

public static String getDeviceId() {
    String result = null;

    //假如之前已经保存有device id,则直接取出使用
    result = PrefConfig.getString(PrefConfig.DEVICE_ID, "");
    if (StringUtils.isNotEmpty(result))
      return result;

    TelephonyManager manager =
        (TelephonyManager) StarfishApplication.getInstance().getSystemService(
            Context.TELEPHONY_SERVICE);

    result = manager.getDeviceId();
    if (StringUtils.isNotEmpty(result)) {
      PrefConfig.setString(PrefConfig.DEVICE_ID, result);
      return result;
    }

    result =
        android.provider.Settings.Secure.getString(StarfishApplication.getInstance().getContentResolver(),
            android.provider.Settings.Secure.ANDROID_ID);

    if (StringUtils.isNotEmpty(result)) {
      PrefConfig.setString(PrefConfig.DEVICE_ID, result);
      return result;
    }

    //上述两种方式都不一定能拿到device id,随机生成一个uuid
    result = UUID.randomUUID().toString();
    PrefConfig.setString(PrefConfig.DEVICE_ID, result);

    return result;
  }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值