Есть ли какой-то конкретный способ заставить систему удалить всплывающее окно появляется слушатель в Android - PullRequest
1 голос
/ 19 апреля 2019

Я столкнулся с проблемой, связанной с тем, как получить прослушиватель диалогового окна удаления устройства, как показано ниже: «Хотите удалить это приложение?»Для этого я попытался с администратором устройства устройства, но не получить желаемого решения.Если любая помощь от вас будет гораздо более ценной.

1 Ответ

2 голосов
/ 19 апреля 2019

Если вы хотите заблокировать пользователей от удаления вашего приложения, вы можете зарегистрироваться как Device Admin , чтобы предотвратить удаление (пользователи должны отменить регистрацию, чтобы иметь возможность удалить ваше приложение), здесь это пример того, как это сделать, оттуда, я полагаю, вы можете ограничить открытие приложения настроек 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());

Существует целый ряд ограничений, подробнее см. Документацию .

...