9
A
回答
12
從docs:
getDeviceId()
返回唯一的設備ID,用於 例如,IMEI對於GSM和CDMA手機的MEID 。如果設備 ID不可用,則返回null。
1
設備ID僅用於在您啓動時通過將您的手機與Google帳戶關聯,即在仿真器上不可用的情況下注冊Market的情況下才可用。這似乎已經改變了Android 2.2,其中一個是爲模擬器生成的。我不認爲它與IMEI,ICC或任何其他與電話相關的令牌相關聯,而是Google網絡服務爲識別您的手機而生成的僞唯一令牌。
8
這是很容易得到Android的UDID - 看看下面的代碼:
public class DemoActivityActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
Log.d(">>>>", "Android ID: " + Secure.getString(getContentResolver(), Secure.ANDROID_ID));
Log.d(">>>>", "Device ID : " + tm.getDeviceId());
}
爲獲得設備ID,你必須設置下列權限在AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
對於獲取Android ID無需設置任何權限。
1
我實現了一個類來獲得IMEI/WIFI MAC地址/設備ID,希望對你有用^^
public class DeviceInfo {
protected static String imeiNumber;
protected static String wifiMacAddress;
protected static String deviceID;
// This method must be called before other method
public static void init(Context context) throws Exception {
imeiNumber = getImei(context);
wifiMacAddress = getWifiMacAddress(context);
deviceID = getDeviceId(context);
}
public static String getDeviceInfo() {
return deviceID;
}
public static String getImei() {
return imeiNumber;
}
public static String getWifiMacAddress() {
return wifiMacAddress;
}
public static String getModel() {
return Build.MODEL;
}
public static String getOsVersion() {
return Build.VERSION.RELEASE;
}
protected static String getDeviceId(Context context) throws Exception {
String imei = getImei(context);
if (imei != null) return imei;
String tid = getWifiMacAddress(context);
return tid;
}
protected static String getWifiMacAddress(Context context) throws Exception {
WifiManager manager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = manager.getConnectionInfo();
if (wifiInfo == null || wifiInfo.getMacAddress() == null)
return md5(UUID.randomUUID().toString());
else return wifiInfo.getMacAddress().replace(":", "").replace(".", "");
}
protected static String getImei(Context context) {
TelephonyManager m = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
String imei = m != null ? m.getDeviceId() : null;
return imei;
}
protected static String md5(String s) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(s.getBytes());
byte digest[] = md.digest();
StringBuffer result = new StringBuffer();
for (int i = 0; i < digest.length; i++) {
result.append(Integer.toHexString(0xFF & digest[i]));
}
return (result.toString());
}
}
+0
添加以上代碼的權限。
相關問題
- 1. Iphone UDID和Android ID
- 2. iPad或iPhone的Hack UDID
- 3. 派生UDID從iPhone序列#
- 4. 在Prefrences/Settings上顯示iPhone UDID?
- 5. 通過UDID替代iPhone設備識別
- 6. iPhone UDID和谷歌Analystics(分析)
- 7. 註冊挑戰從iPhone中檢索UDID
- 8. 提供iPhone UDID的私人iPhone應用程序分配?
- 9. iphone設備UDID,iphone設備ID和iphone設備標記有什麼區別?
- 10. iPhone的UDID有一個集成的校驗和
- 11. 如何在iPhone上生成一個好的,不變的UDID
- 12. Android/iPhone圖像解析
- 13. 如何使用Phonegap獲取iPhone的唯一標識符(UDID)?
- 14. 在運行時檢測iPhone上的UDID欺騙
- 15. 是否允許將iPhone UDID傳輸到我的服務器?
- 16. iPhone/iPad的唯一標識符BESIDES UUID/UDID?
- 17. 如何從iPhone發送的http請求獲取UDID?
- 18. UDID替換?
- 19. Android的等效iPhone的默認圖像
- 20. 使用UDID的Worklight Push:Apple塊UDID - 它會工作
- 21. iPhone和Android中的圖像兼容性
- 22. 是否可以從iPhone safari瀏覽器獲取UDID?
- 23. iPhone Enterprise程序是否允許無限制使用UDID?
- 24. Android上的按鈕在iPhone上的滑動效果就像iPhone?
- 25. 沒有訪問UDID
- 26. 持續UDID替代
- 27. 配置文件的新UDID
- 28. 如何在我的android手機上找到我的UDID?
- 29. 如何在Android中獲得持久的udid?
- 30. 通過adobe air獲取Android設備的UDID
重複:http://stackoverflow.com/questions/2785485/is-there-a -unique-android-device-id 另一個:http://stackoverflow.com/questions/3115918/android-unique-id/3116243#3116243 – ognian 2010-07-12 07:10:55