Как начать работу или услугу до того, как приложение приложения будет удалено пользователем?
Почему тот же вопрос снова
Этот вопрос задан около 100 раз на SO. Я спрашиваю об этом снова, потому что все ответы говорят this is not possible
, но по крайней мере одно из приложений в Market делает это NQ Mobile Security
. Я начал щедрость по 100 очков по аналогичному вопросу, но на него не было достаточно внимания. Если сообщество не принимает, я удалю вопрос.
Что делает приложение
Приложение показывает активность, когда пользователь пытается удалить его.
![enter image description here]()
и выполняет некоторую обработку перед ее удалением
![enter image description here]()
Что такое мой вопрос
Как запустить Activity
или IntentService
перед тем, как приложение удаляется пользователем, который ранее установил приложение на своем устройстве?
Ответы
Ответ 1
Как @CommonsWare сказал The techniques used by NQ Mobile Security have been reported to the Android Security group, and they are working on a fix to stop this behavior from occurring.
и поднял запрос функции с Google, надеюсь, они могут его послушать.
http://code.google.com/p/android/issues/detail?can=2&q=33315&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&id=33315
Ответ 2
Я думаю, что вы можете отслеживать logcat, где регистрируются все действия, события, намерения и находить, когда отправляется Intent для удаления этого приложения.
Затем вы можете выполнить действие, то есть запустить Activity, но я не уверен в этом шаге.
Надеюсь, это поможет!
Ответ 3
Я не знаю, как это происходит в NQ Mobile Security application
,
Но в общем случае я счел это невозможным (возможно, возможно, но я не смог найти способ),
Поскольку,
Когда вы регистрируете BroadcastReceiver
для android.intent.action.PACKAGE_REMOVED
в своем собственном приложении и когда приложение удаляется, зарегистрированный BroadcastReceiver
был удален до того, как приложение будет удалено, поэтому его собственное событие удаления не будет получено этим BroadcastReceiver
.
Ответ 4
Я знаю, что это старо, но я хочу дать этот ответ.
Прослушивание собственной деинсталляции довольно просто. Вам просто нужно использовать двоичный файл, который вы выполняете и выполняете в фоновом режиме (с помощью команды nohup).
Этот двоичный файл может либо прослушиваться в PACKAGE_REMOVED-трансляции, либо вы можете регулярно проверять, сохраняется ли файл в/data/app/(эти файлы доступны для чтения в мире, список каталогов отключен, но вы знаете свое собственное имя пакета:))
Я не знаю, можно ли сделать второе решение без разряда батареи.