在 中,有以下几种方法获取唯一的 。
1. The IMEI: 仅仅只对
手机有效
TelephonyManager TelephonyMgr =
(TelephonyManager)getSystemService(TELEPHONY_SERVICE); String szImei
= TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE
采用此种方法,需要在 中加入一个许可:
android.permission.READ_PHONE_STATE,并且用户应当允许安装此应用。作为手机
来讲, 是唯一的,它应该类似于(除非你有一个没有量产的手机
(水货)它可能有无效的 ,如:)。
2. Pseudo-Unique ID , 这个在任何
手机中都有效
有一些特殊的情况,一些如平板电脑的设置没有通话功能,或者你不愿加入
!"#$%% 许可。而你仍然想获得唯一序列号之类的东西。这时你可以通过
取出 " 版本、制造商、& ' 型号、以及其他硬件信息来实现这一点。这样计算出来的
不是唯一的(因为如果两个手机应用了同样的硬件以及 镜像)。但应当明白的是,
出现类似情况的可能性基本可以忽略。要实现这一点,你可以使用 () 类
String*+$,-..///we make this look like a valid IMEI
()("0,123/()(#0,123/()& '(0,123/
()4&0,123/()$ 560,123/()!"$%0,123/
()0,123/()#'7&%'0,123/()"50,12
3/() "'&%0,123/()%8$0,123/()%6 0,12
3/()'$0,1239//13 digits:
大多数的 () 成员都是字符串形式的,我们只取他们的长度信息。我们取到 个数字,
并在前面加上“;。这样这个 看起来就和 位 一样了。
3. The Android ID,通常被认为不可信,因为它有时为 )。
开发文档中说明了:这个 会改变如果进行了出厂设置。并且,如果某个 手
机被 过的话,这个 也可以被任意改变。
String m_szAndroidID = Secure.getString(getContentResolver(),
Secure.ANDROID_ID);
)<<=>无需任何许可。
4. The WLAN MAC Address string,是另一个唯一 。
但是你需要为你的工程加入 android.permission.ACCESS_WIFI_STATE权限,否
则这个地址会为 )。