Некоторые приложения для Android могут помнить, были ли они установлены на том же устройстве ранее. Предположим, вы удалили приложение год назад. Через год, если вы снова установите это же приложение, оно сможет распознать, что оно было установлено ранее на том же телефоне.
Этот метод используется онлайн-приложениями, чтобы навсегда запретить пользователям когда-либо снова создавать новую учетную запись, если им было запрещено использовать службу один раз. Когда такие пользователи создают новую учетную запись, переустанавливая приложение позже, эти приложения могут обнаружить свое «первое присутствие» и отправить эту информацию на серверы, чтобы пользователя можно было снова заблокировать.
Как они это делают даже после очистки их данных и их полной деинсталляции? Это означает, что они хранят какой-то файл в телефоне, который не удаляется после удаления. Как отключить это обнаружение?
источник
Do app creators have rights?
На самом деле, на моем телефоне они не. Я мог бы позволить им запускать свой код и хранить свои данные на моем телефоне, но они не имеют права, и я оставляю за собой право отменить обе привилегии по своему усмотрению.Ответы:
Существует несколько способов идентифицировать уникальное устройство или его пользователя:
ANDROID_ID
(уникальные для каждой новой установки) : этот метод прост, но требует доступа в Интернет, по крайней мере, при первом использовании. Это не очень навязчиво и не сохраняется в случае сброса настроек. Это также уникально для каждого пользователя. Смотрите эту информацию .ANDROID_ID
подход, но требует явного разрешения (Android 6.0+) от пользователя для доступа. Таким образом, приложения, использующие преимущества экосистемы учетных записей Google (например, рекорды и достижения в играх), могут следовать за конкретным пользователем и получать больше информации, чем просто было установлено приложение или нет.2, 3 и 4 требуется сетевое соединение и сервер на стороне разработчика.
источник
strace
утилиту, которую можно использовать для отслеживания всех системных вызовов. Поэтому вы должны запустить свое приложение, используяstrace
и проверять все системные вызовы, связанные с файлами на устройстве, и вы обнаружите все файлы, прочитанные / проверенные на наличие приложением. Конечно: вероятно, это довольно сложно сделать на смартфоне, но определенно возможно .Он связан не с хранилищем, а с облаком. Вот как он запоминает, даже если вы удалили свои данные. Чтобы отключить это, перейдите в приложение настроек вашего устройства, нажмите учетные записи Google в разделе «Личные» (нажмите учетную запись, которую вы хотите, если у вас несколько учетных записей), затем отключите приложения, которые вы не хотите автоматически синхронизировать.
источник
Ответ GiantTree охватывает это лучше всего, но есть еще один момент, о котором стоит подумать. Очевидно, это был бы « темный шаблон », но эту идентификацию можно также сделать путем снятия отпечатков пальцев с определенных пользовательских данных - это можно рассматривать как вариант по его первому пункту («сохранить файл»), но его будет сложнее обнаружить и менее удобно избегать.
Насколько это устойчиво, зависит от выбранных данных. Наиболее очевидный метод - просмотр контактных данных и использование какой-либо формы отпечатка пальца; альтернативой может быть использование временных меток фотографий и других метаданных. Ясно, что они со временем меняются, поэтому любой использованный метод должен был дать точный ответ после модификации (так что он отличается от традиционной хеш-функции). Также нет гарантии, что пользователь не просто удалит отслеживаемые данные, но во многих случаях люди предпочтут этого не делать.
Возможно, вы захотите взглянуть на дактилоскопию браузера, чтобы понять, как это работает, хотя это будет несколько иначе, потому что аппаратное обеспечение телефона обычно более однородно, чем аппаратное обеспечение ПК. Тем не менее, добавление определенных деталей телефона может помочь немного сузить отпечаток пальца.
В частности, этот подход не работает, если пользователь переключает телефоны и переносит их данные на новый телефон - в этом случае (если данные телефона не входят в отпечаток пальца) новый телефон может быть обнаружен как уже имеющий установку, как вопрос задан. Однако вполне вероятно, что в сценарии, когда приложение пытается заблокировать пользователя, это может быть желаемым результатом (а не запретом конкретного телефона).
Пожалуйста, обратите внимание: я ни в коем случае не говорю, что это правильно или «хорошо» как способ работы, если вы пишете приложения, но кажется разумным обсудить это, поскольку только в ходе обсуждения люди выяснят, являются ли они достаточно обеспокоен, чтобы что-то с этим сделать и что это может быть.
источник
Существует класс SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.html, который некоторые приложения используют для хранения данных о предпочтениях. Эти данные не удаляются при удалении приложения. Если приложение позднее переустанавливается, все ранее сохраненные ключи SharedPreferences по-прежнему доступны для него.
источник
SharedPreferences
на самом деле удаляются при удалении приложения. Разработчики могут создавать резервные копии, но по умолчанию они удаляются при удалении. (Источник: как разработчик, я удаляю свои приложения, чтобы очистить настройки. См. Также: stackoverflow.com/a/9815641/1438733 )Есть и другая возможность - использовать постоянные куки с очень большим «сроком действия». Я думаю, именно так несколько приложений одного и того же разработчика традиционно делятся учетными данными, когда сохраненные учетные данные с помощью функции учетных записей не были настолько открыты / известны общественности.
источник