2010-07-12 11 views
9

क्या एंड्रॉइड के पास आईफोन जैसे यूडीआईडी ​​है? यदि हां, क्या कोई तरीका है कि मैं इसे प्रोग्रामिक रूप से प्राप्त कर सकता हूं?एंड्रॉइड यूडीआईडी ​​आईफोन की तरह?

धन्यवाद क्रिस

+0

डुप्लिकेट: http://stackoverflow.com/questions/2785485/is-there-a -unique-android-device-id और दूसरा एक: http://stackoverflow.com/questions/3115918/android-unique-id/3116243#3116243 – ognian

उत्तर

12

docs से:

getDeviceId()

, अद्वितीय उपकरण आईडी रिटर्न उदाहरण के लिए, जीएसएम के लिए आईएमईआई और सीडीएमए फोन के लिए MEID । डिवाइस आईडी उपलब्ध नहीं है, तो शून्य वापस लौटें।

1

डिवाइस आईडी केवल तभी उपलब्ध होती है जब आप शुरू करते समय अपने फोन को अपने Google खाते से जोड़कर बाजार के लिए साइन अप करते हैं, यानी एम्यूलेटर पर उपलब्ध नहीं है। ऐसा लगता है कि एंड्रॉइड 2.2 के साथ बदल गया है, जहां एक एमुलेटर के लिए भी उत्पन्न होता है। मुझे विश्वास नहीं है कि यह आईएमईआई, आईसीसी या किसी अन्य फोन से संबंधित टोकन से जुड़ा हुआ है, लेकिन यह आपके फोन की पहचान करने के लिए 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()); 

} 

डिवाइस आईडी प्राप्त करने के लिए आप AndroidManifest.xml में निम्नलिखित अनुमति सेट करने के लिए है:

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

के लिए एंड्रॉइड आईडी प्राप्त करने के लिए आपको कोई अनुमति सेट करने की आवश्यकता नहीं है।

1

मैं IMEI/वाईफ़ाई मैक पता/DeviceID प्राप्त करने के लिए एक वर्ग को लागू किया है, यह उपयोगी आप ^^ के लिए आशा है कि

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

उपरोक्त कोड के साथ निम्नलिखित अनुमतियां जोड़ें। <उपयोग-अनुमति एंड्रॉइड: नाम = "android.permission.READ_PHONE_STATE" /> <उपयोग-अनुमति एंड्रॉइड: name = "android.permission.ACCESS_WIFI_STATE" /> – user1154390

संबंधित मुद्दे