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