Ermitteln Sie Änderungen der Option "SIM-Karte sperren" in Einstellungen / Sicherheit / SIM-Kartensperre einrichten

Eine Frage, die sich vorzugsweise an Android 4.0.x richtet.

Ich möchte sofort oder nach einigen Sekunden feststellen, dass Änderungen an vorgenommen wurdenLock SIM card imSettings > Security > Set up SIM card lock.

Ich habe 3 Methoden ausprobiert:

1) schreibgeschützt zugreifencom.android.settings Gemeinsame Einstellungen.

Context settings = getApplicationContext().createPackageContext("com.android.settings", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences prefSettings = settings.getSharedPreferences("com.android.settings_preferences", MODE_WORLD_READABLE);

Map<String, ?> allSettings = prefSettings.getAll();
for(String s : allSettings.keySet()){
    //do somthing like String value=allSettings.get(s).toString());
}

In logcat wird eine Warnung angezeigt: "Versuch, die Einstellungsdatei /data/data/com.android.settings/shared_prefs/com.android.settings_preferences.xml ohne Erlaubnis zu lesen". Die Karte wurde von zurückgegebengetAll() ist leer.

2)ITelephony.isSimPinEnabled() Gibt immer false zurück, auch wenn die SIM-PIN aktiviert und festgelegt ist. Es scheint also, dass das Ändern der Einstellung absolut nichts mit dieser Schnittstelle zu tun hat. Ich habe überlegt, die Benutzeroberfläche abzufragen, aber das ist auch nicht gut.

3) Erstellen einesContentObserver beobachtenSettings.Secure arbeitet hier nicht. Eigentlich Lesen des Inhalts vonsettings.db Bei SQLite-Shows wird beim Ändern dieser Einstellung kein Datensatz geändert. Dies wurde auch durch den folgenden Code bestätigt:

try {
    int lockPattern = android.provider.Settings.Secure.getInt(getContentResolver(), android.provider.Settings.Secure.LOCK_PATTERN_ENABLED);
    // check lock Pattern: 0=disabled, 1=enabled
} catch (SettingNotFoundException e) {
    e.printStackTrace(); // on run, we reach this line.
}

Das einzige, was ich sicher bin, ist das Ändern derSIM PIN enabled Die Einstellung schreibt die Datei com.android.settings preferences.xml wie folgt um:

$ adb shell cat /data/data/com.android.settings/shared_prefs/com.android.settings_preferences.xml

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="sim_toggle" value="true" />
<string name="sim_pin"></string>
</map>

Das von der Änderung betroffene Tag lautetsim_toggle.

Hat jemand eine Idee? Was mache ich hier falsch?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage