[Android 8.1 + 9] Apps per Tasker starten

G

Gelöschtes Mitglied 342348

Gast
Wie vielleicht schon der Eine oder Andere mitbekommen hat, ist es nicht mehr so einfach möglich aus einem Tasker-Profil eine App zu starten.
Das wurde seit der 8.1 leider durch die Security-Beschränkungen in Android heraus genommen.

Wofür braucht man das?
Nun, es gibt Leute (so Honks wie ich halt einer bin), die haben gerne nach dem Booten (auch aus dem Standby heraus) ein paar Apps automatisch gestartet.
Die meisten PX5 haben nur leider das Problem, dass es nicht wirklich eine White-List gibt, die die laufenden Apps persistiert, also beim "Suspend to RAM" die laufenden Apps killt. Bei Joying gibt es eine Heilung, da kann man das einrichten, dass alle Apps aktiv bleiben. Das gibt es bei vielen anderen Anbietern leider nicht.
Hier muss also eine Alternative her... Zumindest nach dem Aufwecken ohne Zutun wieder die Apps starten, die man gerne im Hintergrund aktiv haben möchte. Ob das Blitzer.de, die Navigation, ein Communicator, oder was auch immer sein mag...

Was brauchen wir?
  • gerootetes Android-Radio 😉
  • Laptop/Tablet
  • ADB- Fastboot auf Windows im Root von C: installiert
  • Tasker auf dem Android-Radio
  • Ein paar Tricks...
  • ...und ein wenig Zeit...
Vorgehen:
Als erstes mal was zur besseren Benutzung:
  • Erstellt euch ein Textfile und schreibt da lediglich rein: cmd.exe
  • Speichert dann dieses Textfile als CMD_Starter.bat ab. (nicht als .txt)
  • Legt diese CMD_Starter.bat dann in den Ordner, in dem auch die adb.exe liegt.
  • Somit müsst ihr nicht mehr in ADB erst einmal mit CD.... in den Ordner wechseln. Ist einfach eine Arbeitserleichterung.
Nun geht es los:
  1. Laptop und Radio müssen im gleichen WLAN-Netzwerk verbunden sein, also vom Windows eine Tethering-Verbindung zum Radio aufbauen.
  2. Dann schauen wir mal in den Einstellungen --> Netzwerkdetails die IP-Adresse des Android-Radios auslesen und notieren. Die brauchen wir gleich.
  3. Startet jetzt mal die gewünschten Apps auf dem Radio, wir müssen nämlich die genauen Namen erst einmal ermitteln.
Nun starten wir ADB auf dem PC.
Wer mit ADB und Shell zurecht kommt, der kann den Spoiler zu lassen. Wichtig ist nur, dass ihr mit "top" die App-Namen ermittelt.
Als erstes nehmen wir Kontakt zum Radio auf mit:
Als Beispiel-IP benutze ich mal eine der IP´s von einem meiner Geräte... Die muss natürlich durch die ermittelte IP vom Radio ausgetauscht werden!
adb connect 192.168.178.37

Ihr bekommt dann eine Ausgabe wie diese hier:
Code:
C:\ADB_Fastboot>adb connect 192.168.178.37
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
connected to 192.168.178.37:5555

Damit habt ihr schon einmal die Verbindung erfolgreich hergestellt.
Als nächstes wollen wir die aktiven Apps ermitteln. Das geht über die Shell.
Mit adb shell wechselt ihr von der ADB-Konsole in die Shell des Radios.
Dann kommt so was raus:
Code:
C:\ADB_Fastboot>adb shell
rk3368:/ #
Natürlich unterscheidet sich die Bezeichnung des Gerätes.
Der nächste Befehl in der Shell lautet top
Damit listet man alle laufenden Applikationen des Radios auf. Achtung: "top" läuft kontinuierlich weiter. Stoppen geht über die Tastatur, indem man die "q" -Taste drückt --> q für quit.
Jetzt sucht man sich seine bevorzugten Apps in der Liste:
Code:
[?25l[0m[H[JTasks: 290 total,   1 running, 288 sleeping,   0 stopped,   0 zombie                  
Mem:   4034844k total,  2857844k used,  1177000k free,    11168k buffers                              
Swap:  2017416k total,        0k used,  2017416k free,  1605164k cached                                
800%cpu  90%user   0%nice  65%sys 642%idle   3%iow   0%irq   0%sirq   0%host                          
[7m  PID USER         PR  NI VIRT  RES  SHR S[%CPU] %MEM     TIME+ ARGS                                    [0m
  719 u0_a87       20   0 3.6G 142M 120M S 67.7   3.6  90:21.12 com.zoulou.dab
11738 root         20   0  11M 3.9M 3.2M R 32.2   0.1   0:00.06 top
  300 audioserver  20   0 111M  17M  14M S 19.3   0.4  18:24.17 audioserver
  330 mediacodec   20   0  36M  14M  11M S 16.1   0.3  21:07.99 media.codec hw/android.hardware.media.o+
3236 u0_a110      20   0 1.4G 328M 172M S  6.4   8.3  13:00.10 com.tomtom.gplay.navapp.nds
  280 audioserver  20   0  22M  10M 8.2M S  6.4   0.2   3:31.67 android.hardware.audio@2.0-service
  915 root         20   0    0    0    0 S  3.2   0.0   0:15.92 [RTW_CMD_THREAD]
  500 system       18  -2 4.4G 256M 211M S  3.2   6.5  20:51.81 system_server
  298 root         20   0 5.5M 604K 528K S  3.2   0.0   0:02.30 ak_mcu_daemon
    7 root         20   0    0    0    0 S  3.2   0.0   1:01.13 [rcu_preempt]
11506 root         20   0    0    0    0 S  0.0   0.0   0:00.07 [kworker/u16:3]
10860 root         20   0 9.0M 3.0M 2.5M S  0.0   0.0   0:00.02 sh -
9007 root         20   0    0    0    0 S  0.0   0.0   0:00.07 [kworker/7:2]
8961 u0_a22       20   0 4.2G 148M 127M S  0.0   3.7   0:04.27 com.google.android.googlequicksearchbox+
7227 root         20   0    0    0    0 S  0.0   0.0   0:00.99 [kworker/u16:2]
5590 root         20   0    0    0    0 S  0.0   0.0   0:03.88 [kworker/4:2]
5526 u0_a8        20   0 3.5G  81M  68M S  0.0   2.0   0:00.25 com.android.settings.intelligence
5490 system       10 -10 3.6G 150M 121M S  0.0   3.8   0:09.87 com.android.settings
5413 root         20   0    0    0    0 S  0.0   0.0   0:01.57 [kworker/u16:0]
27868 root         20   0    0    0    0 S  0.0   0.0   0:03.92 [kworker/u16:5]
22254 root         20   0    0    0    0 S  0.0   0.0   0:00.01 [kworker/3:2]
22103 u0_a26       20   0 3.5G  82M  69M S  0.0   2.0   0:00.23 com.google.android.partnersetup
16633 root         20   0    0    0    0 S  0.0   0.0   0:00.66 [kworker/7:0]
15634 root         20   0    0    0    0 S  0.0   0.0   0:00.00 [kworker/3:1]
14745 root         20   0    0    0    0 S  0.0   0.0   0:00.04 [kworker/5:1]
14502 u0_a10       20   0 3.6G 166M 142M S  0.0   4.2   0:05.14 com.google.android.gms.ui
8463 root         20   0    0    0    0 S  0.0   0.0   0:05.96 [kworker/0:0]
8352 root         20   0    0    0    0 S  0.0   0.0   0:00.01 [kworker/5:0]
8251 u0_a11       20   0 3.5G 101M  87M S  0.0   2.5   0:00.33 com.android.launcher
8206 u0_a24       20   0 3.5G  82M  70M S  0.0   2.0   0:00.15 com.android.defcontainer
8181 u0_a36       20   0 1.0G  98M  88M S  0.0   2.4   0:04.09 com.android.vending:instant_app_install+
7922 u0_i2        20   0 0.9G  68M  58M S  0.0   1.7   0:00.06 com.android.webview:sandboxed_process0
7871 u0_a101      18  -2 1.1G 150M 126M S  0.0   3.8   1:48.79 de.blitzer.plus
5945 root         20   0    0    0    0 S  0.0   0.0   0:00.07 [kworker/1:0]
3547 root         20   0    0    0    0 S  0.0   0.0   0:00.00 [kworker/2:2]
3479 u0_a110      20   0 1.0G 106M  94M S  0.0   2.6   0:13.67 com.tomtom.gplay.navapp.nds:servicescon+
3436 u0_a56       20   0 3.6G 149M 105M S  0.0   3.7   0:12.82 com.google.android.tts
2302 u0_a5        20   0 3.5G  99M  85M S  0.0   2.5   0:04.17 android.process.acore
2269 root         30  10  13M 1.4M 864K S  0.0   0.0   0:00.03 daemonsu:10116
1760 root         30  10  12M 1.5M 864K S  0.0   0.0   0:00.00 [7m[27m[7m[27m[7m[27m[7m[27m[7m[27m[7m[27m[7m[27m[7m[27mdaemonsu:0 [7m^T[27m[7m^T[27m[7m^T[27m[7m^T[27m
1706 root         30  10  11M 1.4M 864K S  0.0   0.0   0:00.02 daemonsu:10098
1610 u0_a36       20   0 1.2G 211M 145M S  0.0   5.3   3:57.55 com.android.vending
1417 u0_a111      20   0 3.6G 117M  99M S  0.0   2.9   0:13.60 robj.readit.tomefree
1388 u0_a91       20   0 4.2G 121M 105M S  0.0   3.0   0:15.29 ru.speedfire.flycontrolcenter:notificat+[?25h[0m[1000;1H[K[?25h[0m[1000;1H[Krk3368:/ #
Ich würde zum Beispiel gerne folgende Apps immer laufen haben:
  • Blitzer.de
  • TomTom
  • ReadItToMe
Wir suchen uns also die entsprechenden App-Namen:
Code:
7871 u0_a101      18  -2 1.1G 150M 126M S  0.0   3.8   1:48.79 de.blitzer.plus
3236 u0_a110      20   0 1.4G 328M 172M S  6.4   8.3  13:00.10 com.tomtom.gplay.navapp.nds
1417 u0_a111      20   0 3.6G 117M  99M S  0.0   2.9   0:13.60 robj.readit.tomefree

Tasker:

Das kann man auch am PC in der Shell testen. 😉
Was wir natürlich nicht wollen ist, dass Apps doppelt gestartet werden, deshalb fragen wir das nun vorher ab:
Nehmen wir das Beispiel für TomTom.

Die benötigten Befehle in Tasker:

  • cat /proc/$(pidof -s [Name der App] 1)/oom_adj
Code:
Was macht dieser Befehl:

cat --> concatenate  (das ist ein Verkettungs-Befehl aus Linux. Einer der meistgenutzten Befehle in Linux)

proc --> Process information (enthält unter Anderem auch Prozess-Informationen)

oom_adj --> gibt den Zustand der App her

cat /proc/$(pidof -s com.tomtom.gplay.navapp.nds 1)/oom_adj ermittelt also, ob TomTom läuft.

Es gibt mehrere Zustände:

TomTom ist komplett ausgeschaltet --> Rückgabewert = 15
TomTom im Hintergrund aktiv       --> Rückgabewert = 3
TomTom im Vordergrund             --> Rückgabewert = 0

  • monkey -p [Name der App] 1
Code:
Was macht dieser Befehl:
monkey ist ein mächtiges Commandline-Tool, mit dem man verschiedene Befehle auf der Unit ausführen kann. So auch das Starten einer App.

Wir haben nun alles was wir brauchen und gehen nun an Tasker:
Erstellt euch einen Task, wie zum Beispiel mit Namen "Startup".
  1. Man wählt mit dem "+" eine neue Aktionskategorie auf und wählt da:
    • Code -->Shell ausführen.
    • Befehl: cat /proc/$(pidof -s [B]com.tomtom.gplay.navapp.nds[/B] 1)/oom_adj
    • Benutze Root --> einschalten
    • Output speichern in : %Status_Navi (oder ein anderer Name, wichtig nur, dass der erste Buchstabe ein Großbuchstabe ist)
    • Fehler speichern in: %Status_Navi_fault (wie oben)
    • Task weiter ausführen nach Fehler --> einschalten
    • Das war der erste Schritt.
  2. Wait von 200-300ms stabilisiert das Ganze
  3. Jetzt kommt eine If-Schleife:
    • Bedingungen:
    • %Status_Navi UNGL 0
    • AND
    • %Status_Navi UNGL 3
  4. Shell auswählen:
    • Befehle: monkey -p [B]com.tomtom.gplay.navapp.nds[/B] 1
    • Benutze Root --> einschalten
  5. Wait einfügen --> ca. 15 Sek. also mal checken, wie lange die jeweilige App zum starten braucht.
  6. Else
  7. End If
Das war es am Beispiel der TomTom-App.

Bei der Blitzer.plus gibt es eine Besonderheit:
Blitzer.plus ist komplett ausgeschaltet --> Rückgabewert = cat: /proc//oom_adj: No such file or directory
Blitzer.plus im Hintergrund aktiv --> Rückgabewert = 0
Blitzer.plus im Vordergrund --> Rückgabewert = 0

cat /proc/$(pidof -s de.blitzer.plus 1)/oom_adj gibt hier wie man sieht eine Fehlermeldung aus.
Man sollte hier also auf die Fehlermeldung prüfen, statt nach dem Zustand selber.
... also:
  1. If
    • $Status_Blitzer_false UNGL cat: /proc//oom_adj: No such file or directory
    • Shell ausführen
    • Befehl monkey -p de.blitzer.plus 1
    • Benutze Root
    • Wait --> 1-2 Sek
  2. else
  3. End If
Also besser bei den Apps vorher über den PC prüfen, welchen Rückgabewert das cat /proc/$(pidof -s [Name der App] 1)/oom_adj liefert... man kann ja nie wissen.

Mit dieser Lösung kann man bequem die Einschränkungen von Android "umgehen".
Viel Spaß damit.
 
Zuletzt bearbeitet von einem Moderator:
  • Danke
Reaktionen: old.splatterhand und bjoerner

Ähnliche Themen

promediax70
Antworten
4
Aufrufe
215
promediax70
promediax70
Dennis123456789
Antworten
6
Aufrufe
186
swa00
swa00
B
Antworten
1
Aufrufe
98
NV200
NV200
Zurück
Oben Unten