Могу ли я получить имя пакета приложения в качестве переменной Tasker при обновлении пакета?

Я пытаюсь использовать Tasker для создания настраиваемых уведомлений с помощью AutoNotification с контекстом события «Пакет обновлен *». Но что мне действительно нужно, так это знать, передается ли при обновлении пакета имя обновленного пакета приложения в переменную? Я уже знаю о намерении Package_Added из этого другого вопроса , но ничего не говорит о намерении Package_Updated.

Ответы (1)

Вы всегда можете воспользоваться для самостоятельной охоты. Например: после успешного обновления приложения, если вы немедленно выполните следующую команду и проследуете за разделом ACTIVITY MANAGER BROADCAST STATE (трансляции активности дампси), вы обнаружите намерение android.intent.action.PACKAGE_REPLACED . Вы также заметите, что данные в этом намерении содержат столь востребованное имя пакета.

adb shell dumpsys activity 

Соответствующий демонстрационный вывод:

#0: BroadcastRecord{dec5090 u0 android.intent.action.PACKAGE_REPLACED}
    act= android.intent.action.PACKAGE_REPLACED dat= package:com.koushikdutta.backup flg=0x4000010 (есть дополнения)
    дополнительные функции: Bundle[{android.intent.extra.UID=10185, android.intent.extra.REPLACING=true, android.intent.extra.user_handle=0}

Что касается использования информации в Tasker, настройте свой профиль и задачи следующим образом:

  • Профиль: Событие → Система → Получено намерение

    • Действие:android.intent.action.PACKAGE_REPLACED
    • Схема:package
    • оставить остальное нетронутым
  • Задача: (Действия):

    • Переменные → Переменная Поиск Заменить

      • Переменная:%intent_data
      • Поиск:package:
      • отметьте только одно совпадение
      • отметьте Заменить совпадения
      • Заменить на: оставьте это нетронутым, так как мы хотим удалить совпадение.

        Только имя пакета теперь будет доступно для значения переменной %intent_data(локальной переменной). Используйте его, где хотите.

    Чтобы получить метку приложения, вы можете либо использовать встроенную функциональность Tasker, либо использовать aapt(последнее требует root-доступа)

    • Приложение → Тестовое приложение:

      • Тип: Название пакета
      • Данные:%intent_data
      • Сохранить результат в:%label

        Метку приложения теперь можно получить из переменной %label.

Дополнительные сведения об обработке намерений в Tasker см. в разделе Доступ к данным о намерениях.

Домашнее задание : если вы внимательно следите за выводом активности dumpsys, вы заметите, что информацию о том, что приложение было обновлено, можно получить только из android.intent.action.PACKAGE_ADDED .

Связанный: получить новое имя установленного приложения с помощью Tasker