PIN-Anfrage nach Flugzeugmodus deaktivieren

10

Beim Einschalten des Telefons wird standardmäßig aufgefordert, die SIM-PIN einzugeben. Dies ist eine gute Sicherheitsmaßnahme, um zu verhindern, dass "Fremde" Kosten verursachen. Jetzt gilt das Gleiche bei der Rückkehr aus dem Flugzeugmodus: Man muss die SIM-PIN erneut eingeben. Was bestimmte Energiesparer unbrauchbar macht: Wenn eine App beispielsweise bei Signalverlust in den Flugzeugmodus wechselt (siehe: Was ist Cell Standby und wie kann ich verhindern, dass sie meinen Akku verbraucht? ), Kann sie ohne Benutzerinteraktion nicht zum normalen Betrieb zurückkehren .

Ich suche nach einer Möglichkeit, dies selektiv zu deaktivieren: Lassen Sie die PIN-Anforderung beim Einschalten des Geräts aktiv sein - werden Sie jedoch nicht nach der SIM-PIN gefragt, wenn Sie aus dem Flugzeugmodus zurückkehren.

Bitte verwechseln Sie dies nicht mit "Schlüsselschutz": Ich frage nicht nach der Bildschirmsperre (PIN / Muster / Passwort). Hier kenne ich mich aus, da es eine API für Apps gibt (so kann ich diese zB mit Tasker vorübergehend deaktivieren ).

Ich weiß, dass dies mit Samsung-Geräten funktioniert - aber ich möchte vorzugsweise eine geräteunabhängige Lösung, die für alle Hersteller funktioniert.

Izzy
quelle
2
Ja wirklich! Lassen Sie mich aus der obigen Frage zitieren: Ich suche nach einer Möglichkeit, dies selektiv zu deaktivieren - nicht um die Prüfung vollständig zu deaktivieren . Ich weiß, dass es vollständig deaktiviert werden kann (was ich derzeit verwende) - aber ich möchte es nur deaktivieren, um vom Flugzeugmodus zurückzuschalten, nicht für den Gerätestart.
Izzy

Antworten:

1

HAFTUNGSAUSSCHLUSS

  1. Dies braucht root. Daran führt kein Weg vorbei.
  2. Auf Ihrem Gerät muss Android 4.1+ ausgeführt werden
  3. Diese Problemumgehung ist für einige Benutzer möglicherweise zu weit fortgeschritten. Versuchen Sie es nur anzuwenden, wenn Sie wissen, was Sie tun.
  4. Ich kann nicht dafür verantwortlich gemacht werden, wenn etwas schief geht oder Ragnarök während des Prozesses startet. Sie tun dies auf eigenes Risiko. Mit Vorsicht fortfahren.
  5. Ich bin nicht der Autor oder anderweitig mit einem der genannten Mods verbunden. Ich habe das nur gefunden und teile es zu Ihrem Vorteil.

Umgehung

Ich habe eine Problemumgehung für das Problem gefunden, das auf einem Samsung Galaxy S2 mit installiertem Cyanogenmod 10.2 und Dorimanx Kernel 9.41 hervorragend funktioniert. Die notwendigen Schritte sind wie folgt:

  1. Stell sicher, dass dein Gerät gerooted ist.

  2. Laden Sie das Xposed Framework Installer herunter und installieren Sie es .

  3. Wenn Xposed in naher Zukunft irgendwo nach root fragt, gewähren Sie es .

  4. Öffnen Sie die App und klicken Sie auf Framework-Tab.

  5. Klicken Sie auf Install/Update.

  6. Starten Sie neu .

  7. Laden Sie den Jelly Bean 4.x Airplane Mode Helper herunter und installieren Sie ihn .

  8. Öffnen Sie Xposed Framework Installer-App erneut und wählen Sie Modules.

  9. Häkchen setzen (aktiv setzen) Jelly Bean 4.x Airplane Mode Helper.

  10. Starten Sie neu .

  11. Öffnen Jelly Bean 4.x Airplane Mode Helper.

  12. Häkchen (aktiv setzen) Aktiviert .

  13. Starten Sie neu .

Das ist es! Flugzeug - Modus sollte wieder funktionieren wie in früheren Android - Versionen und ist nicht fragen , für SIM-PIN nicht mehr , wenn er ausgeschaltet wird. Dies ist jedoch beim Start immer noch der Fall, sodass Ihre SIM-Karte etwas sicherer ist. Ich habe ein automatisiertes Verfahren zum Speichern von Batterien mit Lama-Standortprofilen eingerichtet , das dem hier beschriebenen ähnlich ist (Danke, Izzy), und es funktioniert einwandfrei.

Viel Glück, Leute!

FuzzyQ
quelle
1
Vielen Dank für Ihre Antwort! Ich habe es gerade bearbeitet, um die Formatierung (Listen) zu verbessern, und die Tatsache hinzugefügt, dass JB + erforderlich ist. Da auf meinen Geräten JB noch nicht ausgeführt wird, kann ich es nicht testen. Ich vermute jedoch, dass Sie den wichtigsten Teil der Frage übersehen haben (zumindest erwähnen Sie ihn nicht): Wird bei der Rückkehr aus dem Flugzeug nach der SIM-PIN gefragt? Modus - oder kann das so übersprungen werden?
Izzy
1
Seien Sie versichert, ich habe Ihr Problem vollständig verstanden und meine Antwort ist genau das, wonach Sie gesucht haben;) - Bei der Rückkehr aus dem Flugzeugmodus wird nicht nach der SIM-PIN gefragt, aber beim Booten immer noch. So bleibt Ihre Sicherheit erhalten, aber Ihr Batteriespar-Skript funktioniert wieder. Vielen Dank für das Formatierungs-Upgrade!
FuzzyQ
Ich habe die wichtigsten Informationen hinzugefügt, da Sie Recht hatten - ich habe völlig vergessen zu erwähnen, dass dies tatsächlich die Notwendigkeit beseitigt, Ihre SIM-Karte nach dem Flugzeugmodus erneut zu entsperren.
FuzzyQ
1
In diesem Fall ist es genau das , wonach ich gesucht habe: Automatisierte Jobs funktionieren ohne manuelles Eingreifen, aber das Gerät ist weiterhin geschützt, wenn es um die "Initialisierung" geht (dh nach einem Start). Ausgezeichnet! Ich stimme dem vorerst zu. Da ich die Lösung von t0mm13b auch nicht testen kann, muss ich Ihnen in Bezug auf mein "Akzeptieren" vertrauen: Dies scheint die vielversprechendste (und kostenlosste!) Lösung zu sein, obwohl sie auf JB + beschränkt ist.
Izzy
Weißt du, es ist lustig, wie ich überhaupt dorthin gekommen bin. Ich habe Ihre Frage und Antwort auf das Problem mit dem Zellen-Standby gefunden und bin bald auf das Problem mit dem Flugzeugmodus-SIM-PIN gestoßen. Da ich Xposed Framework bereits seit einiger Zeit verwende, hatte ich die Idee, nach einem xposed-Modul zu suchen, das sich mit dem Problem befasst. :)
FuzzyQ
8

Die Antwort liegt in der Quelle ... es scheint, dass die Eigenschaft, Pin-Lock anzufordern, in build.propoder eingebaut ist default.prop.

Schauen Sie sich die Referenz in der TelephonyManager- Quelle zwischen den Zeilen 735 und 755 an.

public int getSimState() {
        String prop = SystemProperties.get(TelephonyProperties.PROPERTY_SIM_STATE);
        if ("ABSENT".equals(prop)) {
            return SIM_STATE_ABSENT;
        }
        else if ("PIN_REQUIRED".equals(prop)) {
            return SIM_STATE_PIN_REQUIRED;
        }
        else if ("PUK_REQUIRED".equals(prop)) {
            return SIM_STATE_PUK_REQUIRED;
        }
        else if ("NETWORK_LOCKED".equals(prop)) {
            return SIM_STATE_NETWORK_LOCKED;
        }
        else if ("READY".equals(prop)) {
            return SIM_STATE_READY;
        }
        else {
            return SIM_STATE_UNKNOWN;
        }
    }

Der Schlüssel ist TelephonyProperties.PROPERTY_SIM_STATEder, auf den an anderer Stelle zwischen den Zeilen 94 und 98 verwiesen wird .

//****** SIM Card
/**
 * One of <code>"UNKNOWN"</code> <code>"ABSENT"</code> <code>"PIN_REQUIRED"</code>
 * <code>"PUK_REQUIRED"</code> <code>"NETWORK_LOCKED"</code> or <code>"READY"</code>
 */
static String PROPERTY_SIM_STATE = "gsm.sim.state";

Nachdem Sie den Quellcode hier auf meinem Computer durchsucht haben, gebe ich Ihnen eine Vorstellung davon, wie oft diese Methode getSimStateaufgerufen wird. Beachten Sie die Namen der Java-Quelle, um festzustellen, wie sie in Android integriert ist, nicht nur in der Telefonieebene, sondern auch anderswo.

services/java/com/android/server/am/BatteryStatsService.java 219:      int simState = TelephonyManager.getDefault().getSimState();

telephony/java/android/telephony/TelephonyManager.java 523:    public int getSimState() { 551:     * @see #getSimState 562:     * @see getSimState

policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java 478:    public IccCard.State getSimState() {

policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java 545:            final IccCard.State state = mUpdateMonitor.getSimState();

policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java 57:        final IccCard.State simState = mUpdateMonitor.getSimState();

policy/src/com/android/internal/policy/impl/LockScreen.java 273:       mStatus = getCurrentStatus(updateMonitor.getSimState());

policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java 173:                && (mUpdateMonitor.getSimState() == IccCard.State.ABSENT); 217:                final IccCard.State simState = mUpdateMonitor.getSimState(); 469:                && (mUpdateMonitor.getSimState() != IccCard.State.PUK_REQUIRED)) { 512:   secure = mUpdateMonitor.getSimState() == IccCard.State.PIN_REQUIRED 513:                            || mUpdateMonitor.getSimState() == IccCard.State.PUK_REQUIRED; 643:        final IccCard.State simState = mUpdateMonitor.getSimState(); 662:        final IccCard.State simState
= mUpdateMonitor.getSimState();

policy/tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java 49:        public IccCard.State getSimState() {

Geben diese Dateinamen im Sperrbildschirm einen Hinweis?

Theorie

Dies erfordert an dieser Stelle root, indem Sie das aufrufen adb shellund aufrufen, getpropund setpropum dies zu tun, ist der einzige Teil dies, indem Sie aufrufen

adb shell getprop erhalten die relevanten Informationen wie unten gezeigt zurück

sh-4.1# getprop
[gsm.sim.state]: [READY]

Diese subtile Eigenschaft scheint ab dem Moment des Einschaltens dynamisch in einem Backing-Property-Store erhalten zu bleiben und wird entsprechend der Anzahl der Dinge, dem Service und dem versehentlichen Herunterfallen des Mobilteils angepasst, wodurch die SIM-Karte möglicherweise herausgeschleudert wird sein Leser, der den Status der Karte in " nicht bereit " oder " unbekannt " ändern würde . ( Ref: system / core / include / cutils / properties.h und system / core / toolbox / [ getprop | setprop ] .c)

An diesem Punkt könnte theoretisch durch Aufrufen von setprop vor dem Sperren des Bildschirms dieses vorübergehend umgangen werden, aber andererseits könnte dies durch die Telefonieebene zurückgesetzt werden! Habe das nicht versucht! Was dazu führt ...

Fazit

Die einzige Möglichkeit, dies auszuschalten, besteht darin , die Pin-Lock-Anforderung auf der eigentlichen SIM-Karte effektiv zu deaktivieren . Dort wird das "magische" Bit-Flag auf dem gespeichert, in dem die RIL-Schicht der Telefonie es über die proprietäre Bibliothek von htc / samsung / qualcomm einliest, und dies würde verhindern, dass die Eigenschaft "PIN_REQUIRED" bis zum Ende erhalten bleibt die Schichten von Android.

Eine mögliche Problemumgehung nur für Android-Entwickler :)

Dies würde das Hacken und Neukompilieren der Quelle erfordern. Für den Flugzeugmodus kann beim Aufrufen dieses Modus und Verlassen des Flugzeugmodus die Eigenschaft in zwei Teile aufgeteilt werden. Gsm.sim.state kann unverändert bleiben, es wird jedoch eine andere Eigenschaft entwickelt, z. B. gsm.sim.state. airplane.mode und weisen Sie einen Wert nach dem Vorbild von zu SIM_STATE_PIN_NOT_REQUIREDund ändern Sie die Überprüfung des Flugzeugmodus, um diese Eigenschaft zu lesen. Wenn diese Option aktiviert ist, wird das Pin-Dialogfeld nicht angezeigt. Andernfalls wird es wie gewohnt dazu aufgefordert.

t0mm13b
quelle
Vielen Dank für die ausführliche Erklärung, t0mm13b! Wir müssen also davon ausgehen, dass Samsung und LG den Code an allen von Ihnen genannten Stellen geändert haben - wenn die Berichte, die ich über Samsung- und LG-Geräte erhalten habe (wo Leute sagten, sie könnten die SIM-PIN-Prüfung separat deaktivieren, wie in meiner Frage beschrieben) richtig?
Izzy
Danke noch einmal! Wenn Sie erkennen könnten, ob diese Einstellung in CM zu finden ist, und seitdem sie vorhanden ist, wäre dies bereits eine große Hilfe - da CM für viele Geräte verfügbar ist :) Auf meinen Geräten wird CM 7.x ausgeführt, also ich konnte überprüfen - obwohl ich noch nicht auf eine solche Einstellung gestoßen bin (weshalb ich nach dem Ort frage, wo ich suchen soll;)
Izzy
Versuchen Sie Einstellungen> Standort- und Sicherheitseinstellungen, Sim-Kartensperre?
t0mm13b
Ich musste den Kommentar löschen, der eine Antwort auf Ihre Frage in derselben war, die in AOSP-Quellen vorhanden ist (ich habe sie zum ersten Mal gesehen, da meine SIM-Karte bereits entsperrt und ohnehin frei von Pin-Anforderungssperre ist)
t0mm13b
1
Nicht bestätigt für Lebkuchen (CM7.2 auf meinem Motorola Droid² / Milestone²). Die SIM-PIN kann zwar an der beschriebenen Stelle konfiguriert werden - jedoch nur ein / aus, nicht selektiv für "nur beim Einschalten". Es tut uns leid.
Izzy
3

Ich bin mir nicht sicher, ob Sie das tun müssen, was Sie versuchen.

Sie könnten stattdessen:

  • Richten Sie zwei TaskerAufgaben ein, um alles ein- und auszuschalten, was der Aktivierungs- / Deaktivierungsmodus Airplanebewirkt.
  • Verwenden Sie niemals Ihren AirplaneModus. Verwenden Sie Ihre TaskerAufgaben.

Möglicherweise müssen Sie überprüfen, ob Apps aktiviert sind, um ein Hardware-Radio automatisch einzuschalten. Beobachten Sie, ob eine App versucht, die Hintergrundsynchronisierung durchzuführen, oder was auch immer. Möglicherweise versucht sie, deaktivierte Radios einzuschalten. Wenn ja, deaktivieren Sie die Fähigkeit dieser App, Ihr z. B. WLAN automatisch einzuschalten. Ich sage dies, weil der AirplaneModus die unerwarteten WiFi-Verbindungen sicherlich vorher gestoppt hat, aber nicht mehr, wenn Sie diese Antwort versuchen.

Sie können auch festlegen Tasker, dass Airplanebeim Herunterfahren immer in den Modus gewechselt wird. Auf diese Weise sehen Sie die PIN-Sperre beim Booten.

zero2cx
quelle
Vielen Dank, zero2cx - aber ich frage nicht allein nach mir und nicht speziell nach Tasker (mir ist bewusst, dass ich hier die Dinge separat deaktivieren kann; aber das separate Deaktivieren des Mobilfunkgeräts funktioniert mit meinem Milestone² nicht). In der Antwort auf die verknüpften Fragen erwähne ich auch zwei andere Apps. Berichten zufolge muss die PIN entweder eingegeben oder deaktiviert werden, da sie den Flugzeugmodus verwenden. Bitte haben Sie Verständnis dafür, dass ich keine bestimmte Tasker- Lösung möchte (da viele Tasker als zu komplex empfinden ), sondern eine generische Lösung, um das zu tun, wonach ich gefragt habe: Deaktivieren Sie die PIN-Anforderung nur bei Rückkehr aus dem Flugzeugmodus.
Izzy
Okay. Ich bin also ratlos. Es muss eine Möglichkeit geben, es mit Software umzuschalten, aber auf nuanciertere Weise. Wie lässt Samsung das zu?
zero2cx
Ich kann es nicht sagen (habe kein Samsung-Gerät). Aber ich habe Berichte, dass es auf vielen (allen?) Samsung-Geräten sowie mit LG machbar ist. Auf meinem Milestone² habe ich nicht explizit überprüft, da sich meine aktuelle SIM-Karte zuvor in meinem HTC Buzz / Wildfire befand, wenn ich die SIM-PIN zu diesem Zweck vollständig deaktivieren musste.
Izzy