2012-04-18 5 views
21

Я, хотя это было невозможно, но я заметил, что NQ Mobile Security может показать сообщение после того, как я нажму «Удалить» и до вызова PackageUninstaller. Я хотел бы воспроизвести это поведение в своем приложении.Как показать активность ДО НАЧАЛА моего приложения удалено (Android)

Я попытался с помощью процесса прослушивания на «android.intent.action.DELETE» Намерение, как предложено здесь: How to know my app is uninstalled from the device...?

Но, как я собираюсь удалить мое приложение, выбирающий выскакивает с просьбой выбрать мое приложение или деинсталлятор пакета. Как я могу избежать этого?

Есть ли другой способ перехватить ваше приложение событие UNINSTALL? (прежде чем ответить, что это невозможно, попробуйте удалить NQ Mobile Security и посмотреть, что произойдет. На моем Android 2.3.4 он показывает хороший экран, в котором говорится, что без безопасного приложения небезопасно).

+0

Является ли ваше устройство укорененным или это просто запасным/немодифицированным розничным устройством? – scorpiodawg

+0

Кстати, что такое сообщение, которое отображается при нажатии на удаление для «NQ Mobile Security»? Имеет ли это какое-либо отношение к «политике устройства» или «администратору устройства»? – scorpiodawg

+0

@scorpiodawg Нет, не коренится. Это немодифицированное розничное устройство. Я отредактировал вопрос и добавил изображения, как он удаляет, можете ли вы принять изменения? –

ответ

29

Я заметил, что NQ Mobile Security может показать сообщение после того, как я нажимаю на Uninstall и до PackageUninstaller называется

Они должны быть эксплуатируют некоторый недостаток безопасности в Android. Я буду исследовать его и посмотреть, смогу ли я его исправить. Приложения не должны получать контроль над временем удаления.

Спасибо, что указали это!

Есть ли другой способ перехватить ваше приложение событие UNINSTALL?

Я уверен, что надежда нет.

+1

Каковы проблемы/угрозы безопасности, если приложение запускает «Activity» или «IntentService» при удалении? –

+0

@darkcrow С одной стороны, действие может просто переустановить приложение после его удаления. Конечно, вредоносное приложение, скорее всего, сделает это, не предупредив пользователя о том, что что-то происходит. –

+1

@TedHopp Самое вежливое, законное приложение никогда этого не сделает, а приложение со злым умыслом может нанести много вреда. Но полное блокирование такой функции может быть очень вредным для некоторых законных приложений, которые ищут богатый пользовательский интерфейс. –

3

Вероятно, они запрашивают очень критическое разрешение, которое пользователь предоставляет им неосознанно. Посмотрите вкладку «Разрешения» для этого приложения (по состоянию на 6/15/2012): https://play.google.com/store/apps/details?id=com.nqmobile.antivirus20&hl=en.

Список разрешений, которые получает это приложение, абсолютно пугает. Среди прочего:

Системные инструменты ПОЛУЧИТЬ Запущ.прилож Приложение сможет получить информацию о текущих и недавно запущенных задачах. Вредоносные приложения могут открывать конфиденциальную информацию о других приложениях.

ИЗМЕНЕНИЯ/перехватывать НАСТРОЙКИ СЕТИ И TRAFFIC Приложение сможет изменять сетевые настройки и перехватывать и просматривать весь сетевой трафик, например, изменить прокси и порт любого APN. Вредоносные приложения могут контролировать, перенаправить или изменить сетевые пакеты без вашего ведома.

ПРЕДОТВРАЩАЙТЕ ТАБЛЕТКУ ОТ СПОСОБА ПРЕДОТВРАЩАЮЩЕГО ТЕЛЕФОНА ОТ СПОСОБА Позволяет приложению предотвратить перетаскивание планшета. Приложение сможет не допустить, чтобы телефон перестал спать.

ИЗМЕНИТЬ ВАШИ ПАРАМЕТРЫ UI Позволяет приложению изменить текущую конфигурацию, такую ​​как языковой стандарт или общий шрифт . ИЗМЕНИТЬ ГЛОБАЛЬНЫЕ НАСТРОЙКИ СИСТЕМЫ Приложение сможет изменять данные настроек системы . Вредоносные приложения могут повредить конфигурацию вашей системы .

ПРЕДУПРЕЖДЕНИЕ ОТОБРАЖЕНИЯ СИСТЕМЫ ДИСПЛЕЯ Позволяет приложению показывать окна системного предупреждения . Вредоносные приложения могут использовать весь экран.

МОНТАЖНЫЕ И НЕОБЫЧНЫЕ ФАЙЛЫ Позволяет приложению монтировать и отключать файловые системы для съемного хранилища.

CHANGE NETWORK CONNECTIVITY Позволяет программе изменить состояние подключения к сети.

CHANGE WI-FI STATE Позволяет приложению подключаться к Wi-Fi и отключать его от 0 до точек и вносить изменения в настроенные сети Wi-Fi.

- Обновление -

Я также обнаружил, что Android Package Manager в значительной степени просто удаляет пакет, если это просят сделать это. только проверить он выполняет до этого является ли пакет быть удалено в настоящее время зарегистрирован как имеющие активную администратора устройства:

try { 
     if (dpm != null && dpm.packageHasActiveAdmins(packageName)) { 
      Slog.w(TAG, "Not removing package " + packageName + ": has active device admin"); 
      return PackageManager.DELETE_FAILED_DEVICE_POLICY_MANAGER; 
     } 
    } catch (RemoteException e) { 
    } 

См линия 6900 в PackageManagerService в AOSP источника here.

Для этого приложение должно быть явно зарегистрировано пользователем устройства пользователем. См. Примечания по администрированию устройства здесь: http://developer.android.com/training/enterprise/device-management-policy.html.

+0

ok, вы указали отличный указатель на работу: «Может ли пользователь дать разрешение на запуск Activity во время удаления приложения?» –

+0

Смотрите мое обновление выше. Я думаю, что если вы зарегистрируете свое приложение как «администратор устройства», то здесь вы можете что-то сделать. В противном случае это выглядит не так (то есть ОС не имеет такого положения, насколько я могу сказать) – scorpiodawg

+0

Разрешение, требуемое для 'Device Administration'' 'android.permission.BIND_DEVICE_ADMIN'. Не похоже, что приложение просит его? –

3

Я уверен, что они контролируют LogCat для перехвата, когда диспетчер активности вызывает PackageUninstaller. Я думаю, что они убивают задачу и начинают свою собственную деятельность. Это довольно умно, но это определенно использует дыру в безопасности в Android.

+0

Я могу понять потенциал угрозы для этого. Я добавил функцию запросите здесь http://code.google.com/p/android/issues/detail?can=2&q=33315&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&id=33315 –

6

Opera Max - это приложение, которое делает что-то похожее - после его удаления открывается веб-страница.

Как они это делают?

С помощью libevent из собственного кода они смотрят каталог /data/data/com.opera.max, который удаляется, а затем публикует старые добрые действия.VIEW передается, когда это происходит.

Установить их приложение, запустить его, и коренится устройства от ADB оболочки удалить /data/data/com.opera.max Адресной книги

UPDATE: Я создал пример приложения, которое показывает, как это работает. BTW он не работает с недавними версиями (KitKat +, я думаю): https://github.com/pelotasplus/ActionAfterUninstall

+0

Привет, это работает на android 5? I не может заставить его работать. – umni4ek

+0

нет, нет. см. UPDATE в конце моего ответа. это был просто хак. – pelotasplus

+0

И не может этого достичь? Я искал два дня, но не нашел ответа. – umni4ek

0

Согласно https://stackoverflow.com/a/26829978/1317564, вот пример кода, который делает это: https://github.com/zzljob/android-uninstall-feedback/blob/master/library/jni/feedback-uninstall.c. Это фактически не остановит деинсталляцию, но дает возможность поймать ее и предпринять некоторые действия. Я искренне удивлен, что это работает в Android, и команда, возможно, включила пробел в последние выпуски.

Смежные вопросы