检查SIM是否被引脚锁定

时间:2014-05-08 05:36:32

标签: android reflection telephonymanager

我试图检查是否启用了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

中找到此特定设置

0 个答案:

没有答案