访问标准的Android设置:SIM卡的PIN码

时间:2011-11-30 09:14:56

标签: android android-widget

这是我的第一个问题! 我想知道如何访问android中的标准设置,特别是SIM功能。 在启动时,我的三星i-9000只显示插入PIN码的窗口几秒钟,然后消失,所以我想自己开发一个用于主屏幕的小部件,启动标准窗口插入PIN码,但我不知道怎么办呢!

或者某种程度上改变那个窗口的屏幕超时......

非常感谢!

2 个答案:

答案 0 :(得分:1)

在Android中使用TelephonyManager 您不直接实例化此类;相反,您通过Context.getSystemService(Context.TELEPHONY_SERVICE)检索对实例的引用

TelephonyManager manager = (TelephonyManager) Context.getSystemService(Context.TELEPHONY_SERVICE);
int state = manager.getSimState();
if(state == TelephonyManager.SIM_STATE_PIN_REQUIRED || state == TelephonyManager.SIM_STATE_PUK_REQUIRED)
{
         //PIN/PUK is required
}

愿这对你有帮助......

答案 1 :(得分:0)

如果您想在Android 2.3以上版本中应用PIN,则必须将您的应用安装为系统应用,在这两种情况下都应使用此代码:

TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    Class c = Class.forName(tm.getClass().getName());
    Method m = c.getDeclaredMethod("getITelephony");
    m.setAccessible(true);
    ITelephony telephonyService;
    telephonyService = (ITelephony)m.invoke(tm);

    // Supply  SIM PIN
    SharedPreferences prefs = getSharedPreferences(OrangeSignalMeterLoop.class.getCanonicalName()+"x", Context.MODE_PRIVATE);
    if(prefs.getBoolean(context.getString(R.string.whetherAutoCompletePIN), false)) {
        String sim_pin = prefs.getString(context.getString(R.string.pinCode), "1111");  
        telephonyService.supplyPin(sim_pin);
    }

您可能无法使用内部课程,您可以在此处找到最佳教程:https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/