Wie kann ich einen Tasker-Neustartbefehl nur einmal ausführen?

Ich arbeite mit einem chinesischen Tablet, das jedes Mal initialisiert werden muss, nachdem es an eine Stromquelle angeschlossen wurde.

Dazu verwende ich Tasker . Das Problem ist: Diese Bedingung führt dazu, dass der Tasker den rebootBefehl immer wieder ausführt, und es wird zu einem bootloop .

Was soll ich tun, um das Tablet zu initialisieren, wenn eine Stromquelle angeschlossen ist, aber zu vermeiden, dass es in den Bootloop eintritt ?

Bearbeiten: TaskerProfil

<TaskerData sr="" dvi="1" tv="4.6u3">
<Profile sr="prof2" ve="2">
<cdate>1431370575080</cdate>
<edate>1431372456863</edate>
<id>2</id>
<mid0>4</mid0>
<State sr="con0" ve="2">
<code>10</code>
<pin>true</pin>
<Int sr="arg0" val="1"/>
</State>
</Profile>
<Profile sr="prof5" ve="2">
<cdate>1431370730220</cdate>
<edate>1431371684461</edate>
<flags>2</flags>
<id>5</id>
<mid0>6</mid0>
<State sr="con0" ve="2">
<code>10</code>
<Int sr="arg0" val="1"/>
</State>
</Profile>
<Project sr="proj0" ve="2">
<cdate>1431027887676</cdate>
<mdate>1431371133517</mdate>
<name>Base</name>
<pids>2,5</pids>
<tids>4,6,7</tids>
<Img sr="icon" ve="2">
<nme>hl_aaa_ext_home</nme>
</Img>
</Project>
<Task sr="task4">
<cdate>1431370589904</cdate>
<edate>1431372085383</edate>
<id>4</id>
<nme>Task1</nme>
<pri>10</pri>
<Action sr="act0" ve="7">
<code>410</code>
<Str sr="arg0" ve="3">Documents/sdcard.txt</Str>
<Str sr="arg1" ve="3">0</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
</Action>
</Task>
<Task sr="task6">
<cdate>1431370741046</cdate>
<edate>1431372415674</edate>
<id>6</id>
<nme>Task2</nme>
<pri>10</pri>
<Action sr="act0" ve="7">
<code>417</code>
<Str sr="arg0" ve="3">Documents/sdcard.txt</Str>
<Str sr="arg1" ve="3">%True</Str>
</Action>
<Action sr="act1" ve="7">
<code>410</code>
<Str sr="arg0" ve="3">Documents/sdcard.txt</Str>
<Str sr="arg1" ve="3">1</Str>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%True</lhs>
<op>2</op>
<rhs>0</rhs>
</Condition>
</ConditionList>
</Action>
</Task>
<Task sr="task7">
<cdate>1431371028431</cdate>
<edate>1431372348654</edate>
<id>7</id>
<nme>runshell</nme>
<pri>10</pri>
<Action sr="act0" ve="7">
<code>123</code>
<Str sr="arg0" ve="3">reboot</Str>
<Int sr="arg1" val="0"/>
<Int sr="arg2" val="1"/>
<Str sr="arg3" ve="3"/>
<Str sr="arg4" ve="3"/>
<Str sr="arg5" ve="3"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%True</lhs>
<op>2</op>
<rhs>0</rhs>
</Condition>
</ConditionList>
</Action>
</Task>
</TaskerData>

Antworten (1)

Wenn ich die Frage richtig verstanden habe, möchten Sie das Gerät an eine Stromquelle anschließen, die Tasker dazu veranlasst , das Gerät neu zu starten (zur Initialisierung). Aber wenn das Gerät sich selbst neu startet, stellt Tasker fest, dass die Stromquelle angeschlossen ist, und wiederholt die Aufgabe erneut. Ihr Ziel ist es, Tasker nur einmal neu zu starten, während die Stromquelle angeschlossen bleibt. Wenn die Quelle entfernt und erneut eingefügt werden soll, sollte Tasker den Neustart nur einmal durchführen.


Basierend auf diesem Verständnis schlug ich die folgende Lösung vor:

Die Lösung ist sehr trivial. Ich verwende zwei Profile in Tasker , nämlich:

  1. Kein Power-USB
  2. Power-USB

Diese beiden Profile werden offensichtlich durch Anschließen/Trennen der Stromquelle an das Android-Gerät ausgelöst. Ich verwende hier den Inhalt einer Datei als Bedingung, um die Boot-Schleife einzuschränken.

Hinweis: Für diese Antwort habe ich als Stromquelle nur USB ausgewählt.

Anleitung :

Zum Dateiinhalt:

  1. Erstellen Sie eine leere Datei in Ihrem Standardspeicher. (Ich habe eine Datei mit dem Namen erstellt sdcard.txt. /sdcardDer Speicherort dieser Datei ist /sdcard/sdcard.txt.)
  2. Öffnen Sie diese Datei in einem Texteditor in Android und fügen Sie 0sie hinzu. (Ich habe den 920 Texteditor verwendet ).
  3. Beachten Sie, dass es keinen logischen Grund gibt, 0nur zu verwenden. Es wird nur in einer bedingten Anweisung verwendet. Es steht Ihnen frei, eine andere Nummer zu versuchen.

In Bezug auf Profile und Aufgaben in der Tasker -App:

  1. Tasker starten .
  2. Erstellen Sie auf der Registerkarte Profile ein Profil+ , indem Sie auf → Status → Leistung → Leistung tippen .
  3. Wählen Sie unter Quelle USB aus .
  4. Aktivieren Sie Invertieren – dadurch wird das USB-Profil nicht mit Strom versorgt .
  5. Drücken Sie die Zurück-Taste einmal und wählen Sie Neue Aufgabe .
  6. Fügen Sie einen Namen für Ihre Aufgabe hinzu (dauerhaft) oder lassen Sie das Feld leer (durch das Löschen des Profils wird es auch gelöscht).
  7. Tippen Sie auf der Registerkarte Aufgaben+ auf → DateiDatei schreiben .
  8. Geben Sie unter Dateifeld den Speicherort Ihrer Textdatei an. In diesem Fall ist es /sdcard/sdcard.txt.
  9. Schreiben Sie 0unter Textfeld .
  10. Deaktivieren Sie Append und Newline hinzufügen . -- wir wollen den Inhalt ersetzen, also sollte kein Anhängen gemacht werden.
  11. Tippen Sie zweimal auf die Zurück-Taste/Schaltfläche, um diese Aufgabe zu speichern.
  12. Um ein Power USB- Profil zu erstellen, wiederholen Sie die Schritte 2, 3, 5 bzw. 6.
  13. Tippen Sie auf der Registerkarte Aufgaben+ auf → DateiDatei lesen .
  14. Wiederholen Sie Schritt 8.
  15. Unter To Var type %True-- Sie können %Truezu einem beliebigen anderen Namen wechseln. Stellen Sie sicher, dass Sie mindestens einen Buchstaben Ihrer Variablen groß schreiben, um sie nicht lokal zu machen. Sehen Sie sich dies an , um mehr zu erfahren.
  16. Wiederholen Sie die Schritte 11, 7 und 8.
  17. Geben Sie 1unter Textfeld ein .
  18. Wiederholen Sie Schritt 10.
  19. Tippen Sie auf +das entsprechende If . Fügen Sie %Truebzw. 0in den Feldern hinzu. So sollte es aussehen %True ~ 0.
  20. Wiederholen Sie Schritt 11.
  21. Tippen Sie auf der Registerkarte Aufgaben+ auf → CodeShell ausführen .
  22. Geben Sie rebootunter Befehl ein . (Mein Gerät ist gerootet, daher habe ich Root-Berechtigungen für diesen Schritt bereitgestellt, um Ärger zu vermeiden.) Als Soft-Reboot-Option können Sie anstelle killall zygotevon reboot.
  23. Aktivieren Sie Root verwenden, wenn Ihr Gerät gerootet ist.
  24. Lassen Sie Ausgabe speichern in und Fehler speichern in leer.
  25. Wiederholen Sie die Schritte 19 und 20.
  26. Gehen Sie zu Profile und aktivieren Sie beide Profile. Um sich unnötigen Ärger zu ersparen, deaktivieren Sie alle anderen energiebezogenen Profile als die oben genannten.
  27. Tasker muss aktiviert sein . Sie können dies überprüfen, indem Sie einmal auf die Menütaste / -schaltfläche tippen, und unter den Optionen wäre Tasker deaktivieren sichtbar. Wenn diese App läuft und Sie sie zufällig minimieren, sehen Sie als Standardeinstellung ihr Symbol in der Statusleiste mit dem dort genannten Profil (falls aktiviert).

Wir können loslegen.

  • Gehen Sie zum Startbildschirm Ihres Geräts.
  • Schließen Sie die Stromquelle an (wir haben hier nur USB verwendet).
  • Ihr Gerät wird neu gestartet. Trennen Sie die Stromquelle nicht, um zu überprüfen, ob die Boot-Schleife verschwunden ist.
  • Wenn das Gerät nach dem Neustart zum Startbildschirm zurückkehrt, können Sie sehen, dass das Power USB- Profil im Tasker aktiviert ist, aber es gibt keine Boot-Schleife, ganz zu schweigen davon, dass Ihre Initialisierung auch abgeschlossen ist. :)
  • Trennen Sie die Stromquelle und das Profil wechselt zu No power USB .
  • Schließen Sie die Stromquelle erneut an und das Gerät wird einmal neu gestartet.

Status: Ziel abgeschlossen . Erledigt!

Es wechselt zwischen beiden Profilen, führt jedoch nicht die RunShell-Aufgabe "Neustart" aus
@Tardo Ich habe dieses Problem verfolgt. Wenn ich die Root- Option in dieser Aufgabe deaktiviere , startet das Gerät überhaupt nicht neu. Ratet mal, auch kein Fehler in den Protokollen von Tasker. Ich habe die Root-Option überprüft und es hat gut funktioniert. Ich habe das Gefühl, dass Ihr Gerät nicht gerootet ist.
Ich verwende SuperSU von Chainfire, um das Gerät zu rooten
Wenn ich die Neustartaufgabe (manuell) ausführe, wird sie neu gestartet
Können Sie mir die Screenshots aller Profile und Aufgaben senden, die Sie mit dieser Antwort im Detail erstellt haben? IDK zum Exportieren und Wiederherstellen von Tasker-Daten.
Ich werde den Beitrag mit den Profilen und Aufgaben bearbeiten.
Gehen Sie zur ActionBar Settings(in der rechten Ecke) -> Data-> Share. Dann können Sie eine Datei ähnlich der, die ich gerade als Bearbeitung gepostet habe, in einen TextEditor übertragen.
Tut mir leid, aber ich habe nicht genug Ruf, um den Chat zu benutzen. :(
Kein Problem mit dem Chat, das System hat mich gefragt, also habe ich versucht, es zu verschieben. Wie auch immer, ich habe versucht, das Zeug im Texteditor anzuzeigen, und ich habe auch eine andere Option. Wenn Sie ein Profil gedrückt halten, erhalten Sie die Option, es zu "exportieren". Ich habe beide Profile exportiert und ich denke, Sie sollten sie importieren können. Ich schicke dich jetzt.
Aight. Bitte überprüfen Sie den Chat erneut.