Обнаружение изменений «Блокировка SIM-карты» в меню «Настройки» / «Безопасность» / «Настройка блокировки SIM-карты»
Вопрос нацеленный на Android 4.0.x желательно.
Я хочу немедленно или через несколько секунд обнаружить любые изменения, внесенные вLock SIM card
вSettings > Security > Set up SIM card lock
.
Я попробовал 3 метода:
1) доступ только для чтенияcom.android.settings
общие предпочтения.
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());
}
В logcat есть предупреждение: & quot; Попытка прочитать файл настроек /data/data/com.android.settings/shared_prefs/com.android.settings_preferences.xml без разрешения & quot ;. Карта, возвращеннаяgetAll()
пустой.
2) ITelephony.isSimPinEnabled()
всегда возвращает false, даже если PIN-код SIM-карты включен и установлен. Так что, похоже, изменение настроек не имеет абсолютно никакого отношения к этому интерфейсу. Я думал об опросе интерфейса, но это тоже не хорошо.
3) созданиеContentObserver
наблюденияSettings.Secure
здесь не работает На самом деле, читая содержаниеsettings.db
с sqlite показывает, что нет никаких записей, измененных при изменении этого параметра. Это также было подтверждено следующим кодом:
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.
}
Единственное, что я уверен, это то, что изменениеSIM PIN enabled
настройка переписывает файл com.android.settings preferences.xml, как показано ниже:
$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>
Тег, затронутый изменением,sim_toggle
.
У кого-нибудь есть идея? Что я здесь не так делаю?