2014-10-02 3 views
1

Есть ли идентификатор, который уникален для установки приложения?Android - идентификатор, уникальный для установки приложения

Уникальные устройства, которые я имею в виду, поэтому, если одно и то же приложение установлено на 10 разных устройствах, тогда существует 10 различных идентификаторов. И два разных приложения на одном устройстве должны иметь два разных идентификатора.

Нужно оставаться постоянным после обновлений приложений и в идеале измениться, если вы удалили и переустановили приложение.

И по соображениям безопасности я не хочу генерировать UUID и записывать его в файл в частном хранилище приложений.

+0

Существует. Вы можете использовать [эту библиотеку] (https://github.com/delight-im/Android-BaseLib) для генерации идентификатора, который делает именно то, что вы хотите: [Identity.getInstallationId (контекст)] (https: // github. ком/услада-им/Android-BaseLib/BLOB/Master/Source/SRC/им/радость/Android/baselib/Identity.java). – caw

+0

Спасибо, но это не соответствует критериям. Я сказал: «По соображениям безопасности я не хочу генерировать UUID и записывать его в файл в app-private storage_», но метод «writeInstallationId» делает именно это. –

+0

Ну, это имеет только последствия для безопасности на корневых устройствах, ? Если это беспокойство, ладно. Тогда вы не можете использовать какой-либо специфичный для приложения идентификатор, и, конечно же, вы должны использовать идентификатор устройства. – caw

ответ

0

Моим решением для этого является использование класса SharedPreferencesBackupHelper Android и BackupAgentHelper. Нет необходимости хранить ваш UUID в файле в частном хранилище приложений (хотя я не уверен, каковы ваши ограничения безопасности, поэтому использование базы данных SharedPreferences может быть не лучше). Это решение позволяет вам иметь уникальный идентификатор устройства/установки, и он будет выживать при удалении и установке приложения (что я обычно считаю хорошим). Если у вас есть приложение для определения времени выполнения, если оно было переустановлено, приложение может генерировать новый UUID в это время.

Один из способов сделать это - посмотреть в установленном пакете ресурсов приложения для файла индикатора, который является частью вашего .apk. Если приложение видит этот файл, это новая установка: сгенерировать/сохранить UUID, а затем удалить файл (или изменить его содержимое). Последующие казни найдут это и поймут, что это не новая установка.

Это соответствует вашим потребностям?

+0

Спасибо, но нет - я надеялся, что будет ID, который Android даст мне. Я не хочу упорствовать в орфеях или на диске для некоторых немного странных соображений безопасности. –

+0

@PaulHilliar Я думаю, вы даете себе невыполнимую задачу. Что вы ищете, «установочный отпечаток», который Android знает и может предоставить вашему приложению по требованию, но не может быть доступен другим приложениям на борту. Но сам Android должен быть в состоянии сохранить его, чтобы он мог предоставляться по требованию. Я не думаю, что существует идентификатор, который соответствует вашим параметрам. – alpartis

+0

Да, «установочный отпечаток», именно то, что я хотел бы - это хорошее имя для него.Совершенно очевидно, что Android предоставит такой идентификатор, немного раздражая, что они решили не реализовывать его. –

0

Google предоставляет Advertising ID как уникальный идентификатор для всех устройств/пользователей и работает во всех API-интерфейсах Google Play API 9 или выше.

Существует ряд других механизмов, таких как использование Settings.SECURE.ANDROID_ID, как описано в this (pre-advertising ID) blog post. Обратите внимание на комментарии в блоге на ANDROID_ID хотя:

Есть недостатки: во-первых, это не 100% надежны на релизах Android до 2.2 («Froyo»). Кроме того, по крайней мере одна широко известная ошибка в популярном телефоне от крупного производителя, где каждый экземпляр имеет тот же ANDROID_ID.

+0

Спасибо, но не является ли рекламный идентификатор одинаковым для всех приложений на одном устройстве/пользователе? Я хочу определить установку приложения. Два разных приложения на одном устройстве должны иметь два разных идентификатора. –

+0

Поэтому добавьте имя пакета в рекламный идентификатор, и оно будет уникальным для каждого приложения. – ianhanniballake

+0

Это работает как идентификатор, но я надеялся, что с другими приложениями на телефоне будет что-то, что нелегко узнать. –

Смежные вопросы