2010-07-12 25 views
9

Android có UDID như IPhone không? Nếu có, có cách nào tôi có thể làm cho nó có lập trình không?Android UDID như IPhone?

Cảm ơn Chris

+0

trùng lặp: http://stackoverflow.com/questions/2785485/is-there-a -unique-android-device-id Và một số khác: http://stackoverflow.com/questions/3115918/android-unique-id/3116243#3116243 – ognian

Trả lời

12

Từ docs:

getDeviceId()

Trả về ID thiết bị duy nhất, cho dụ, IMEI cho GSM và MEID cho điện thoại CDMA. Trả về null nếu thiết bị ID không khả dụng.

1

ID thiết bị được sử dụng chỉ khả dụng nếu bạn đã đăng ký Market bằng cách liên kết điện thoại với tài khoản Google của bạn khi bạn bắt đầu, tức là không có sẵn trên trình giả lập. Điều này dường như đã thay đổi với Android 2.2, trong đó một được tạo ra cho trình giả lập là tốt. Tôi không tin rằng nó được liên kết với IMEI, ICC hoặc bất kỳ mã thông báo liên quan đến điện thoại nào khác, nhưng đúng hơn là mã thông báo giả tạo bởi các dịch vụ web của Google để xác định điện thoại của bạn.

8

Nó rất dễ dàng để có được Android UDID - kiểm tra đoạn mã sau:

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()); 

} 

Để nhận được ID thiết bị, bạn phải thiết lập quyền sau đây trong AndroidManifest.xml:

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

Đối nhận được ID Android mà bạn không cần phải đặt bất kỳ quyền nào.

1

tôi thực hiện một lớp học để có được địa chỉ IMEI/Wifi MAC/deviceID, hy vọng nó hữu ích cho bạn ^^

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

thêm các quyền sau với mã ở trên. user1154390

Các vấn đề liên quan