Подтвердить что ты не робот

PACKAGE_REMOVED, а затем PACKAGE_ADDED запускаются вместе с PACKAGE_REPLACED.

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

Итак, Для этого я внедрил BroadcastReciever, как показано ниже

<receiver android:name =".IntentReceiverTest.AppReciever">
  <intent-filter>
         <action android:name="android.intent.action.PACKAGE_REMOVED"/>
         <action android:name="android.intent.action.PACKAGE_REPLACED"/>
         <action android:name="android.intent.action.PACKAGE_ADDED"/>
         <data android:scheme="package"/> 
  </intent-filter>
</receiver> 

На каждом Замените я получаю 3 трансляции с действиями

  • Сначала с PACKAGE_REMOVED, который запускает AppReciever
  • затем после PACKAGE_ADDED, который снова запускает AppReciever
  • И затем через несколько секунд PACKAGE_REPLACED, который снова запускает AppReciever

Поэтому, пожалуйста, предложите лучший способ поймать только Заменить действие

Или

способ остановить ранее запущенные Сервисы из-за действия PACKAGE_REMOVED и PACKAGE_ADDED.

4b9b3361

Ответ 1

Просто проверьте intent.getBooleanExtra(Intent.EXTRA_REPLACING, false):

if (!intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED) &&
    intent.getBooleanExtra(Intent.EXTRA_REPLACING, false))
    return;