できれば Android 4.0.x を対象とした質問です。
Lock SIM card
in に加えられた変更をすぐに、または数秒後に検出したい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 に次の警告があります。によって返されるマップgetAll()
は空です。
2) ITelephony.isSimPinEnabled()
SIM PIN が有効で設定されている場合でも、常に false を返します。したがって、設定を変更しても、このインターフェイスとはまったく関係がないようです。インターフェースをポーリングしようと思っていましたが、これもダメです。
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
.
誰にもアイデアがありますか?ここで何が間違っていますか?