Чтобы включить Android 9 , у меня есть только одна идея, которая все еще может работать, которая (вероятно) не нарушает никаких условий, требует разрешений и работает в установках и приложениях.
Отпечатки пальцев с участием сервера должны иметь возможность уникально идентифицировать устройство.Комбинация информации об оборудовании + установленных приложений и времени установки должна помочь.Время первой установки не изменится, если приложение не будет удалено и установлено снова.Но это должно быть сделано для всех приложений на устройстве, чтобы не иметь возможности идентифицировать устройство (т.е. после сброса к заводским настройкам).
Вот как я бы поступил:
- Извлечение информации об оборудовании, названий пакетов приложений и времени первой установки.
Вот как вы извлекаете все приложения из Android (разрешения не требуются):
final PackageManager pm = application.getPackageManager();
List<ApplicationInfo> packages =
pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
try {
Log.d(TAG, "Installed package :" + packageInfo.packageName);
Log.d(TAG, "Installed :" + pm.getPackageInfo(packageInfo.packageName, 0).firstInstallTime);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
Возможно, вы захотите создать хэш для каждой комбинации имени пакета и метки времени установки перед отправкой на сервер, поскольку это может относиться или не относиться к тому, что пользователь установил на устройстве. Некоторые приложения (на самом деле их много) являются системными приложениями.Скорее всего, они будут иметь одинаковую метку времени установки, соответствующую последнему обновлению системы после сброса к заводским настройкам.Поскольку они имеют одинаковую метку времени установки, они не могут быть установлены пользователем и могут быть отфильтрованы. Отправьте информацию на сервер и разрешите ей искать ближайшее совпадение среди ранее сохраненной информации.Вам необходимо установить порог при сравнении с ранее сохраненной информацией об устройстве, поскольку приложения устанавливаются и удаляются.Но я предполагаю, что этот порог может быть очень низким, так как любое имя пакета и одна только временная комбинация установки будут довольно уникальными для устройства, а приложения не так часто устанавливаются и удаляются.Наличие нескольких приложений просто увеличивает вероятность быть уникальным. Возвращает сгенерированный уникальный идентификатор для совпадения или генерирует уникальный идентификатор, сохраняет информацию об устройстве и возвращает этот новый идентификатор.
NB: Этоне проверенный и не проверенный метод!Я уверен, что это сработает, но я также уверен, что, если это зацепит, они так или иначе закроют его.