2016-10-23 8 views
0

Мне нужно определить, когда мое приложение удаляется. Для этого я видел, что logcat отправляет UNINSTALL_PACKAGE намерение, и я просто добавил его к существующему широковещательному приемнику, который у меня есть. Но он просто не поймал его, в то время как другие намерения, которые я слушаю, TIME_TICK, прекрасно работают. Зачем?Android: BroadcastReceiver: UNINSTALL_PACKAGE намерение

Код, используемый в настоящее время:

private IntentFilter intentFilter; 

static { 
    intentFilter = new IntentFilter(); 
    intentFilter.addAction(Intent.ACTION_TIME_TICK); 
    intentFilter.addAction(Intent.ACTION_UNINSTALL_PACKAGE); 
} 

private final BroadcastReceiver receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     final String action = intent.getAction(); 
     if (action.equals(Intent.ACTION_UNINSTALL_PACKAGE) { 
      Log.e("App", "Uninstalling"); 
     } else if (action.equals(Intent.ACTION_TIME_TICK){ 
     // this works 
     } 
    } 
}; 
+0

Возможный дубликат [Получение и удаление пакетов приема пакетов] (http://stackoverflow.com/questions/7470314/receiving-package-install-and-uninstall-events) – Beloo

ответ

1

мне нужно определить, когда мое приложение быть удалено

Там не поддерживается способ сделать это, по понятным причинам безопасности.

Но это просто не улавливает его

ACTION_UNINSTALL_PACKAGE is an activity action. Ничто на устройстве Android не должно посылать его в эфир. Следовательно, вы не можете слушать его через BroadcastReceiver.

0

Я видел, что logcat отправляет UNINSTALL_PACKAGE намерение, и я просто добавил его к существующему ретранслятору вещания, который у меня есть. Но он просто не поймал его, в то время как другие намерения, которые я слушаю, TIME_TICK, прекрасно работают. Зачем?

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

Если вы хотите захватить событие uninstall вашего приложения, тогда нет никакой концепции, предоставляемой google, однако вы можете сделать это, наблюдая изменение данных в вашей файловой системе, где вам необходимо отслеживать изменения в файловой системе.

Это решение не будет работать для всех телефонов & различных версий Android.

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