寻找Android手机设备的唯一ID

时间:2015-05-04 20:22:37

标签: android unique gsm telephonymanager

TelephonyManager. getDeviceId ()是否会返回不同的ID如果用户将设置中的移动网络从GSM更改为CDMAWCDMA(反之亦然,从CDMA更改为GSM)?

当移动设备中的网络设置设置为TelephonyManager. getDeviceId ()时,IMEI会返回GSM个ID,当设置更改为MEID or ESN时,会CDMA ID 因此getDeviceId()的返回值可能会根据设备设置而改变,不能用于唯一标识设备!

2 个答案:

答案 0 :(得分:0)

使用此选项可在所有设备上获取唯一ID。平板电脑上的TelephonyManager失败并返回null,因此您必须将该结果与其他内容相结合,就像我一样。

public static String getDeviceID(Context context) {
    TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    String tmDevice, tmSerial, androidId;

    tmDevice = "" + tm.getDeviceId();
    tmSerial = "" + tm.getSimSerialNumber();
    androidId = "" + android.provider.Settings.Secure.getString(context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

    UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());
    return deviceUuid.toString();
}

请注意,您需要将此权限添加到AndroidManifest

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

答案 1 :(得分:0)

我不知道为什么(特别是)你使用了一个唯一的ID,但在我的情况下,我用它来识别一个独特的应用程序安装&#34;。因此,它不依赖于simCards,电话管理器等。

我所做的是创建一个唯一的id(当它尚未创建时)并将其存储在sharedprefs中:

private static String       uniqueID           = null;

public static String getDeviceUniqueID(Context context)
{
        if (uniqueID == null)
        {
            final String    PREF_UNIQUE_ID     = "PREF_UNIQUE_ID";
            SharedPreferences sharedPrefs = context.getSharedPreferences(PREF_UNIQUE_ID, Context.MODE_PRIVATE);
            uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
            if (uniqueID == null)
            {
                uniqueID = UUID.randomUUID().toString();
                Editor editor = sharedPrefs.edit();
                editor.putString(PREF_UNIQUE_ID, uniqueID);
                editor.commit();
            }
        }
        return uniqueID;        
} 

<强>注意事项:

  • 当然,当用户卸载应用程序时它会丢失,因为也会删除sharedprefs;
  • 有可能为2个不同的用户生成一个唯一的ID(但每个用户只有数万亿或更多)。

但是,正如我上面所说:&#34;不知道你为什么要使用它&#34;。

这种方式对我来说就像是一种魅力。也许它也适合你。欢呼声。