Есть ли у Android UDID, например, IPhone? Если да, есть ли способ, я могу получить его программно?Android UDID как IPhone?
Благодаря Крис
Есть ли у Android UDID, например, IPhone? Если да, есть ли способ, я могу получить его программно?Android UDID как IPhone?
Благодаря Крис
Из docs:
getDeviceId()
Возвращает уникальный идентификатор устройства, для например, IMEI для GSM и MEID для телефонов CDMA. Возврат null, если устройство ID недоступно.
Идентификатор устройства используется только в том случае, если вы зарегистрировались на рынке, связав свой телефон с учетной записью Google при запуске, то есть недоступном на эмуляторе. Это, похоже, изменилось с Android 2.2, где тоже создается эмулятор. Я не думаю, что это связано с IMEI, ICC или любым другим токеном, связанным с телефоном, но скорее псевдо-уникальный токен, созданный веб-службами Google для идентификации вашего телефона.
Это очень легко получить 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"/>
Для для получения идентификатора Android вам не нужно устанавливать какие-либо разрешения.
я реализовал класс, чтобы получить IMEI/Wi-Fi MAC-адрес/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());
}
}
добавьте следующие разрешения с вышеуказанным кодом.
Дубликат: http://stackoverflow.com/questions/2785485/is-there-a -unique-android-device-id И еще один: http://stackoverflow.com/questions/3115918/android-unique-id/3116243#3116243 – ognian