Я столкнулся с проблемой, связанной с тем, как получить прослушиватель диалогового окна удаления устройства, как показано ниже: "Хотите удалить это приложение?" Для этого я попытался с администратором устройства устройства, но не получить желаемого решения. Если любая помощь от вас будет гораздо более ценным.
Если вы хотите запретить пользователям удалять ваше приложение, вы можете зарегистрироваться в качестве администратора устройства, чтобы предотвратить удаление (пользователи должны отменить регистрацию, чтобы иметь возможность удалить ваше приложение), оттуда, я полагаю, вы можете ограничить открытие приложения Настройки Android ( пользователям нужно открыть, чтобы отменить регистрацию вашего приложения в качестве администратора устройства), здесь описано, как это сделать, и имя пакета параметров приложения - com.android.settings
.
Второй ответ о том, как обнаружить удаление приложения:
Я боюсь, что нет официального способа обнаружить всплывающее окно удаления, даже если у вас есть права администратора устройства, но есть какой-то хакерский способ сделать это, посмотрите здесь, он не идеален и имеет свои ограничения, но это все же лучше чем ничего.
Оригинальный ответ о том, как предложить удалить приложение:
Вам не нужны средства администратора устройств, чтобы предлагать удалить ваше приложение, вы можете просто использовать намерение, чтобы запустить запрос на удаление, который вы запрашивали, вот так:
Uri packageUri = Uri.parse("package:APP_PACKAGE_NAME");
Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
startActivity(uninstallIntent);
Примечание. Указанное выше намерение ACTION_UNINSTALL_PACKAGE доступно только после API 14 (Android 4.0). Если ваше приложение предназначено для Android P и выше, вам необходимо добавить разрешение REQUEST_DELETE_PACKAGE в ваш AndroidManifest
. Кроме того, это намерение устарело, начиная с Android Q, и в этом случае вы должны использовать PackageInstaller.uninstall()
например:
String packageName = "com.your.app.package";
Intent intent = new Intent(getActivity(), getActivity().getClass());
PendingIntent sender = PendingIntent.getActivity(getActivity(), 0, intent, 0);
PackageInstaller packageInstaller = getActivity().getPackageManager().getPackageInstaller();
packageInstaller.uninstall(packageName, sender.getIntentSender());
Там есть целая куча ограничений, но подробности см. В документации.