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;
  }


你可能感兴趣的:(Android)