2015-11-23 2 views
1

Я пытаюсь получить уникальную информацию об устройстве с ОС Android.Как получить уникальную информацию об устройстве с Android 6.0?

Перед Android 6.0 можно получить WiFi MAC как уникальную информацию об устройстве, но с 6.0 невозможно получить ее больше, и я не смог найти никакой информации.

Я нашел несколько идей, как показано ниже, но это не идеально.

  1. Secure.ANDROID_ID: После заводского сброса идентификатор будет изменен, и я не смог бы найти способ доказать, действительно ли это уникально или нет.
  2. Build.SERIAL: Некоторые производители, такие как HTC, Samsung предоставляют совершенно другой способ получить его.

Есть ли у кого-нибудь идеи? Пожалуйста, помогите мне.

спасибо.

+1

Вам просто нужен уникальный идентификатор или что-то, что на самом деле связано с устройством (т. Е. Если кто-то должен был восстановить заводские настройки своего устройства и передать его кому-то еще, вы все равно хотите получить тот же ID?)? – ianhanniballake

+0

Рассмотрите возможность определения установки приложения вместо устройства. Сохраните 'UUID' в' SharedPreferences' и используйте это как свой ID. –

+0

Возможный дубликат [Android unique id] (http://stackoverflow.com/questions/3115918/android-unique-id) – mbmc

ответ

1

IMEI хорошо:

try { 
    TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE); 
    if (tm.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE) 
    return ""; 
    return tm.getDeviceId(); 
} catch (Throwable e) { 
    return null; 
} 
2

Settings.Secure.ANDROID_ID довольно много путь. Приятной особенностью этого является то, что он предоставляет различный идентификатор для каждого пользователя на устройстве, что обеспечивает свободный уровень гибкости бесплатно.

Что касается фабричной перезагрузки, вам нужно подумать о 1) Какой процент ваших пользователей на самом деле сделает это, и 2) Если кто-то хочет уничтожить свое устройство и удалить все содержимое, приложения и ассоциации, сделайте они действительно хотят, чтобы ваше приложение больше могло идентифицировать свое устройство? Или, если кто-то фабрика сбрасывает, а затем продает или передает устройство новому пользователю, вы все равно хотите, чтобы это устройство было идентифицировано с предыдущим пользователем?

Если вы доберетесь до этой точки, и Settings.Secure.ANDROID_ID все еще не достаточно хорош, лучшее решение, скорее всего, приведет к процедуре входа в систему и удаленному хранению данных.

+0

еще одна «приятная» вещь о Settings.Secure.ANDROID_ID - это то, что пользователи могут ее модифицировать. Вероятно, необходим корень. – marcinj

+0

@marcinj - Но опять же, если это достаточно большая проблема для вашего сценария, что вы просто не можете взять на себя такой риск, то, вероятно, лучший вариант - это вход пользователей на удаленный сервер с защищенными учетными записями. Я бы никогда не привязывал личную/защищенную информацию к ID устройства. В моих приложениях я использую его исключительно для телеметрии. – NoChinDeluxe