Все, что мы знаем, что обычное (на практике какое-либо) антивирусное приложение перед удалением использовало для запуска простого диалога, например: "Вы собираетесь удалить приложение, вы уверены?" - "да/нет".
Да, я знаю, что я могу перехватить намерение удалить пакет с помощью фильтра-замысла, например:
<activity
android:name=".UninstallIntentActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.DELETE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" />
</intent-filter>
</activity>
Но проблема проста в том, что это перехватывает запросы any, и, кроме того, это сработает диалог выбора между моим приложением и установщиком акций. Поэтому, если пользователь выберет установщик запаса - я ничего не смогу сделать.
Моя цель - не помешать пользователю удалить мое приложение, а просто отменить изменения, сделанные моим приложением.
Изучая эти антивирусные приложения, я вижу, что такая операция возможна, поэтому, пожалуйста, помогите мне и объясните, как это возможно?
Обновление
Поскольку есть некоторые ребята, которые не считают, что это реально - я бы назвал Avast Mobile Security:
Anti-Theft защищает себя от удаления, маскируя его компоненты с различными методами самосохранения.
Еще один пример: Kaspersky Internet Security для Android - здесь специальная процедура для его удаления, которая требует ввода секретного кода.
В любом случае это означает, что есть способ перехватить процедуру удаления, чтобы либо предотвратить удаление, либо выполнить какое-то завершающее задание.