Kann ich bei einem Paketaktualisierungsereignis einen App-Paketnamen als Tasker-Variable erhalten?

Ich versuche, Tasker zu verwenden, um benutzerdefinierte Benachrichtigungen mit AutoNotification mit dem Ereigniskontext „Paket aktualisiert *“ zu erstellen. Aber was ich wirklich brauche, ist zu wissen, ob beim Aktualisieren eines Pakets der aktualisierte App-Paketname an eine Variable übergeben wird? Ich kenne die Absicht von Package_Added bereits aus dieser anderen Frage , aber es sagt nichts über eine Absicht von Package_Updated aus.

Antworten (1)

Sie können jederzeit zu Ihren Diensten stellen, um die Jagd selbst durchzuführen. Beispiel: Wenn Sie nach einem erfolgreichen Update einer App sofort den folgenden Befehl ausführen und dem Abschnitt ACTIVITY MANAGER BROADCAST STATE (Dumpsys Activity Broadcasts) folgen, würden Sie auf die Absicht android.intent.action.PACKAGE_REPLACED stoßen . Sie würden auch feststellen, dass die Daten in dieser Absicht den viel gesuchten Paketnamen enthalten.

adb shell dumpsys activity 

Relevante Demo-Ausgabe:

#0: BroadcastRecord{dec5090 u0 android.intent.action.PACKAGE_REPLACED}
    act= android.intent.action.PACKAGE_REPLACED dat= Paket:com.koushikdutta.backup flg=0x4000010 (hat Extras)
    Extras: Bundle[{android.intent.extra.UID=10185, android.intent.extra.REPLACING=true, android.intent.extra.user_handle=0}

Um die Informationen in Tasker zu verwenden, richten Sie Ihr Profil und Ihre Aufgaben wie folgt ein:

  • Profil: Ereignis → System → Absicht erhalten

    • Aktion:android.intent.action.PACKAGE_REPLACED
    • Planen:package
    • lass den Rest unberührt
  • Aufgabe: (Aktionen):

    • Variablen → Variablensuche Ersetzen

      • Variable:%intent_data
      • Suchen:package:
      • kreuzen Sie nur ein Spiel an
      • kreuzen Sie Übereinstimmungen ersetzen an
      • Ersetzen durch: Lassen Sie dies unberührt, da wir die Übereinstimmung löschen möchten

        Der Paketname allein wäre nun für den Wert der Variablen %intent_data(eine lokale Variable) verfügbar. Verwenden Sie es, wo immer Sie wollen.

    Um das App-Label zu erhalten, können Sie entweder die eingebaute Funktionalität von Tasker verwenden oder verwenden aapt(letzteres erfordert Root-Zugriff)

    • App → Test-App:

      • Typ: Paketname
      • Daten:%intent_data
      • Ergebnis speichern in:%label

        Das App-Label kann nun aus der Variable abgerufen werden %label.

Weitere Informationen zur Handhabung von Absichten in Tasker finden Sie unter Zugreifen auf Absichtsdaten .

Hausaufgabe : Wenn Sie die Ausgabe der dumpsys-Aktivität genau verfolgen, werden Sie feststellen, dass die Information, dass die App aktualisiert wurde, tatsächlich nur von android.intent.action.PACKAGE_ADDED abgerufen werden kann .

Verwandt: Holen Sie sich den Namen der neu installierten App mit Tasker