我试图检查是否启用了SIM卡。我在病房瞄准4.2。我已经尝试过了:
TelephonyManager manager = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
int state = manager.getSimState();
Log.i(TAG,"SIM State is: "+String.valueOf(state));
if(state == TelephonyManager.SIM_STATE_PIN_REQUIRED ||state ==TelephonyManager.SIM_STATE_PUK_REQUIRED)
{
Log.i(TAG,"Pin required");
}`
但它总是返回5(SIM_READY_STATE)
我也尝试过使用反射
TelephonyManager tm = (TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
Class<?> clazz;
try {
clazz = Class.forName(tm.getClass().getName());
Method m;
m = clazz.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony it =(ITelephony) m.invoke(tm);
if(it.isSimPinEnabled())
Log.i(TAG,"Pin required");
}
但这也会返回false。
有人可以在这里提出建议吗?请注意我的是一个系统应用程序。
编辑:如果有人可以告诉我存储了这个切换值的位置,那也可以。我看过这个链接Detect changes of "Lock SIM card" in Settings/Security/Set up SIM card lock 但我无法在settings.db
中找到此特定设置