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?