Zuhause automatisch entsperrtes Display

Android-Sperrbildschirm deaktivieren, wenn man mit bestimmtem WiFi verbunden ist (mit Tasker)

Mit Tasker ist es möglich, dass das Android-Gerät automatisch entsperrt bleibt, wenn man mit einem bestimmten WLAN-Netz (z. B. Zuhause) verbunden ist. Eine ständige Pin-Eingabe zum Entsperren ist dann nicht notwendig. Verlässt man das Haus, ist das Gerät wieder gesperrt.

Ich glaube, bei älteren Android-Versionen war diese Funktionalität sogar nativ im Betriebssystem optional enthalten: Wenn ich mit einem definierten WLAN-Netz verbunden bin, wird beim Anschalten des Smartphones keine Pin abgefragt und ich bin sofort drin. Der Sperrbildschirm wird dann also übersprungen. So etwas – auf Basis eines bestimmten WLAN – gibt es nicht mehr. Vermutlich spielen hier Sicherheitsbedenken eine Rolle und auch der Komfort, den heutige Fingerabdruck-Sensoren liefern. Denn damit kann ich das Smartphone ja blitzschnell und sehr einfach entsperren.

Mein Tablet hat jedoch keinen Fingerabdruck-Sensor, ich möchte die Daten darauf natürlich dennoch geschützt wissen, wenn ich mit dem Gerät das Haus (bzw. mein eigenes WiFi-Netz) verlasse. Wenn ich mich Zuhause befinde, benötige ich diese Pin-Eingabe zum Entsperren jedoch nicht. Sie nervt dann nur.

Hier kommt Tasker ins Spiel. Denn Tasker kann ja erkennen, ob ich gerade mit einem bestimmten WLAN verbunden bin und daraufhin bestimmte Einstellungen an meinem Android-Gerät automatisch ändern. Dummerweise kann Tasker nicht mehr den Sperrbildschirm gänzlich deaktivieren. Dies ging wohl früher, aber so etwas lässt Android nicht mehr zu. Aber:

Tasker kann die Zeit enorm erhöhen, nach welcher der Sperrbildschirm aktiv wird, wenn das Display ausgeschalten wird. Und diese Zeit kann dann auch wieder zurück gesetzt werden, wenn bestimmte Bedingungen nicht mehr erfüllt sind.

Mit diesem Trick erreicht man also eine Pseudo-Abschaltung des Sperrbildschirms, wenn ich mit einem bestimmten Netz verbunden bin. Bin ich nicht mehr mit diesem verbunden, wird diese Zeit automatisch wieder herunter gesetzt (z. B. auf 10 Sekunden).

Hinweis: Eine oder mehrere Aktionen, die in dieser Anleitung durch Tasker ausgeführt werden sollen, unterliegen mittlerweile leider den Restriktionen von Android: Es sind bei einem Gerät ohne Root zusätzlichen Schritte zur Vorbereitung notwendig.

Denn Tasker benötigt die Rechte, Systemeinstellungen ändern zu können. Diese können Tasker einmalig und für immer via ADB von einem Computer aus gegeben werden, falls nicht bereits geschehen (adb shell pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS) – siehe Link in der Box.

Vorbereitung

In den Sicherheits-Einstellungen von Android darf nicht die Option ausgewählt sein, dass das Gerät beim Drücken der Powertaste sofort gesperrt wird. Damit würde man ja den Timeout (den wir regulieren wollen) überbrücken.

Werbung

Der Haupt-Task

Zunächst erstellen wir einen recht simplen Task:

Bildschirmfoto Tasker: Task zum Setzen der Zeit für die Bildschirmsperre
  1. Dieser Task beinhaltet zunächst eine If-Abfrage mit solchen Bedingungen:Bildschirmfoto Tasker: Einstellungen für If-Abfragen auf Basis von VariablenwertenEs wird hier also mit der Tasker-internen Variable %WIFII gearbeitet. Diese Variable enthält stets frische Informationen zu dem gerade verbundenen WLAN. Unter anderem enthält sie auch die für uns wichtige SSID – Das ist einfach nur der Name des WLAN-Netzes.
    Wir prüfen bei diesen Bedingungen jetzt also einfach, ob eine gewünschte SSID derzeit im Text der Variable %WIFII enthalten ist. Hierzu müssen wir den Namen des vertrauenswürdigen Netzes jedoch zwischen zwei Sternchen schreiben. Dies sind Platzhalter. Denn die Variable enthält davor und danach noch andere Informationen. Diese kennen wir nicht und sie sind hier auch nicht relevant – daher die Sternchen.
    Wie man bei der oberen Abbildung sieht, habe ich drei vertrauenswürdige SSIDs definiert. Man kann hier natürlich auch nur ein einziges definieren. Falls man hier mehrere einträgt, muss der Knopf darunter je auf ODER stehen (und nicht auf „UND“). Damit hätten wir die Bedingung(en) definiert.

    Obacht: Seit Android 8 müssen die Standortdienste aktiviert sein, wenn man SSIDs abfragen möchte.

    Ansonsten enthält %WIFII nur unzureichende Daten. Nur wer Root hat, benötigt die Standortdienste nicht. Dann lesen wir die SSID aber anders aus.

    Trifft eine dieser Bedingungen zu (Wir sind mit einem der definierten WiFi-Netze verbunden), dann wird anhand einer benutzerdefinierten Einstellung das Timeout für die Bildschirmsperre deutlich erhöht:

  2. Eine solche Aktion findet man in der Auswahl unter › DialogBenutzerdefinierte Einstellung. In den Einstellungen dieser Aktion wählt man als ›Typ‹ Secure aus und als ›Name‹ lock_screen_lock_after_timeout. Als ›Wert‹ kann man 14400000 eintragen. Dies ist die Zeit in Millisekunden. Der Wert entspricht dann vier Stunden. Er kann natürlich angepasst werden. Die anderen Einstellungen brauchen nicht angefasst zu werden.
  3. Als Drittes setzen wir noch eine Variable (› VariableVariable Setzen). Wir nennen diese %sichere_Umgebung und als Wert geben wir ihr hier ja. Diese Variable benötigen wir derzeit noch nicht – aber später.
  4. Wenn die Bedingungen (mit bestimmten WLAN verbunden) nicht zutreffen, greift die ELSE-Regel:
  5. Auch hier gibt es die beiden Aktionen, aber die erste (Benutzerdefinierte Einstellung) schreibt eine sehr kurze Zeit (z. B. 180000 Millisekunden = 3 Minuten).
  6. Die zweite Aktion beschreibt wieder die Variable %sichere_Umgebung – aber dieses Mal mit dem Wert nein.
  7. Am Ende wird die If-Abfrage wieder geschlossen.

Das war bereits der wichtigste Teil. Dieser Task muss natürlich noch automatisch ausgelöst werden:

Werbung

Das Haupt-Profil

Unter Tasker wird ein Task mittels einem Profil ausgelöst. Unser Profil schaut so aus:

Bildschirmfoto Tasker: Profil zum Verändern der Zeit für die Bildschirmsperre

Es geht an dieser Stelle nur um das obere, ausgeklappte Profil.

Als Auslöser wählen wir › StatusNetzwerkWiFi Verbunden. Das Profil feuert also immer, wenn irgendein Netzwerk via WLAN verbunden- oder aber auch just getrennt wurde.

Wie man anhand des Screenshots sieht, habe ich als dazugehörigen Task den zuvor angelegten Haupt-Task ausgewählt und zwar auch als Ausgangstask: Denn dieser Task beinhaltet ja eine If-Abfrage und bewirkt demzufolge je immer etwas anderes bzw. schaltet hin- und her – Je nachdem welches Netzwerk verbunden ist.


Damit hätten wir die Logik bereits eingerichtet: Ist ein vertrauenswürdiges Netzwerk verbunden, sorgt Tasker dafür, dass die Zeit, nach der nach dem Abschalten des Displays das Gerät gesperrt wird, deutlich verlängert wird. Der Sperrbildschirm erscheint dann nicht mehr (innerhalb eines bestimmten Zeitraumes). Verbindet man sich mit einem anderen (fremden) Netzwerk, wird automatisch eine sehr kurze Zeit eingestellt und er ist dann wieder da.

Wir benötigen jedoch noch eine zweite Logik, die bewirkt, dass das Gerät gesperrt wird, wenn gar kein WLAN verbunden ist. Denn wenn ich daheim mit meinem Netz verbunden bin, das Tablet in die Tasche stecke und das Haus verlasse, ist weiterhin der hohe Timeout eingestellt – Weil ich mich noch nicht mit einem anderen WLAN verbunden habe. In diesem Zeitraum ist mein Gerät ungeschützt.

Das Sperr-Profil

Daher müssen wir noch ein zweites Profil erstellen:

Bildschirmfoto Tasker: Profil zum Sperren des Smartphones je nach Wifi

Dieses Profil beinhaltet zwei Regeln, die erfüllt sein müssen:

  • Das Display muss ausgeschaltet sein.

    › Status › Display › Displaystatus

  • Unsere Variable (%sichere_Umgebung aus dem ersten Task) muss auf nein stehen.

    › Status › Variable › Variablenwert

Als Task definieren wir einen neuen, den wir ›Gerät sperren‹ nennen können. Dort Fügen wir als erstes eine Wartezeit von ca. 3 Minuten hinzu und danach die Aktion › DisplaySystemsperre.

Wenn man also nicht mehr mit einem vertrauenswürdigen WiFi-Netz verbunden ist, setzt Task № 1 die Variable ›%sichere_Umgebung‹ auf nein. Und wenn man dann auch noch das Display ausschaltet, feuert das zweite Profil: Es wird noch etwas gewartet und danach das Gerät gesperrt.

Viel Text. Aber im Grunde ist der gesamte Ablauf recht einfach strukturiert. Bei mir funktioniert das Überbrücken des Sperrbildschirms so sehr gut. Man kann ja zum Testen – während man mit dem sicheren Heimnetz verbunden ist – das Display des Smartphones / Tablets ausschalten und am Router das WLAN. Kurze Zeit später sollte das Gerät gesperrt sein, obwohl eigentlich noch der lange Timeout in den Einstellungen hinterlegt ist.

Wie schon oben näher beschrieben: Damit Tasker Systemeinstellungen ändern kann (Sperr-Timeout) muss es Schreibrechte für die Systemeinstellungen besitzen.

Werbung

Mit Root muss die Ortung nicht aktiviert sein

Wer ein gerootetes Android hat, kann die SSID auch ohne aktive Ortungsdienste auslesen. Ich habe die Standortdienste auf meinen Geräten aus Datenschutzgründen permanent deaktiviert und aktiviere sie nur bei Bedarf (auch mit Tasker).

Hierfür muss aber eine weitere Hilfsvariable %aktuellesWifi mit einem Wert beschrieben werden, welcher eben genau der Name des aktuell verbundenen WLANs ist. Hierzu legen wir ganz am Anfang des Haupt-Tasks folgende Aktion an:

CodeShell ausführen

Der ›Befehl‹ für die Shell lautet:

dumpsys connectivity 2>/dev/null | grep "WIFI.*CONNECTED" -A 10 | grep "SSID" | head -n 1 | sed 's/.*SSID: "\([^"]*\).*/\1/' || echo ""

›Benutze Root‹ muss aktiviert sein.

›Output Speichern In‹ lautet dann:

%aktuellesWifi

Wir ermitteln also auf eine etwas andere Art (mittels Root-Methode) den Namen des aktuell verbundenen WiFi-Netzes und lassen Tasker diesen in unsere neue Variable schreiben.

Und anstatt dann bei der If-Abfrage im Haupt-Task nach %WIFII abzufragen, tragen wir dort jeweils %aktuellesWifi ein. Denn ohne aktivierte Standortdienste bringt uns %WIFII nichts (es beinhaltet dann keine SSID). Wir nutzen hier unsere neue Variable.

Die Sternchen um die WLAN-Namen herum sollten jedoch entfernt werden. Die benötigen wir hier nicht.

Falls der oben genannte Shell-Befehl die Variable nicht korrekt füllt, kann man auch einen alternativen Befehl testen:

dumpsys wifi | grep 'SSID:' | head -n 1 | awk -F'SSID: ' '{print $2}' | tr -d '"' | cut -d',' -f1

Den aktuellen (zugewiesenen) Variablenwert kann man unter Tasker ja einfach im Tab „Variablen“ einsehen.

Der Rest der gesamten Logik bleibt der Selbe. Wer ohnehin Root hat, benötigt natürlich nicht mehr die ADB-Geschichte: Tasker gibt sich dann selbst die nötigen Rechte.

Somit ist mein Tablet Zuhause über die meiste Zeit entsperrt und nur, wenn ich es (z. B.) innerhalb von vier Stunden nicht nutze, wird es gesperrt bzw. der Sperrbildschirm mit der Aufforderung zur Pin-Eingabe (oder Mustereingabe) erscheint wieder. Es wird auch gesperrt, wenn ich nicht mehr mit meinem vertrauenswürdigen Heimnetz verbunden bin bzw. mit gar keinem Netz. Auch wenn WLAN deaktiviert ist, wird das Gerät gesperrt.

Kommentar schreiben

Hier gibt es die Möglichkeit für Resonanz. Pflichtfelder sind mit * markiert.

Kommentare erscheinen nicht sofort bzw. werden manuell freigegeben. Mit dem Absenden des Formulars stimmen Sie der Datenschutzerklärung zu bzw., dass Ihre eingegebenen Daten gespeichert werden. IP-Adressen werden nicht gespeichert.