9

Android には IPhone のような UDID がありますか? はいの場合、プログラムで取得する方法はありますか?

ありがとうクリス

4

4 に答える 4

12

ドキュメントから:

getDeviceId()

固有のデバイス ID (GSM の IMEI や CDMA 電話の MEID など) を返します。デバイス ID が利用できない場合は null を返します。

于 2010-07-12T06:19:37.050 に答える
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 を取得するために、権限を設定する必要はありません。

于 2012-04-10T08:01:45.443 に答える
1

デバイスIDは、起動時に携帯電話をGoogleアカウントに関連付けてマーケットにサインアップした場合にのみ使用可能でした。つまり、エミュレーターでは使用できませんでした。これはAndroid2.2で変更されたようで、エミュレーター用にも生成されます。IMEI、ICC、またはその他の電話関連のトークンに関連付けられているとは思いませんが、GoogleWebサービスが電話を識別するために生成する疑似一意のトークンです。

于 2010-08-07T03:34:50.517 に答える
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());
}
}
于 2012-04-10T08:24:16.633 に答える