Android能够获取到唯一的设备ID吗?
Android是否有唯一的设备ID,如果有的话,该怎样快速有效获取?
Settings.Secure#ANDROID_ID 返回Android ID ,是一个64位的16进制字符串
123importandroid.provider.Settings.Secure; privateString android_id = Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID);关于这个问题有很多的答案,不过其中大部分将只能算是答对了一部分,还不够好。
根据我在很多设备上的测试(所有的电话,至少有一个是无效的)
finalTelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE); finalString tmDevice, tmSerial, androidId;tmDevice = ""+ tm.getDeviceId();tmSerial = ""+ tm.getSimSerialNumber();androidId = ""+ android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); UUID deviceUuid = newUUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());String deviceId = deviceUuid.toString();
结果可能类似 :00000000-54b3-e7c7-0000-000046bffd97
对我来说这种方式已经足够了
别忘了增加权限,用于读取 TelephonyManager properties,在manifest 中增加下面一行:
1<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>