【问题标题】:how to detect if PIN code is required to unlock sim?如何检测是否需要 PIN 码才能解锁 sim?
【发布时间】:2012-10-05 22:45:13
【问题描述】:

android“设置/位置和安全设置”页面中有一个“SIM卡锁定”选项。

如果设置了该选项,开机后需要输入PIN码。

是否有任何编程方法来检测是否需要 PIN? (不是当前的 sim 状态,而是设置选项值 ex:true/false)

【问题讨论】:

  • 只是出于好奇,您的应用为什么需要知道这一点?
  • 由于某些审核流程受企业限制,App需要此信息才能知道是否存在任何违反政策的情况。

标签: android sim-card


【解决方案1】:

您可以使用以下类: 电话经理 http://developer.android.com/reference/android/telephony/TelephonyManager.html

你不直接实例化这个类;相反,您通过 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
}

继 cmets 之后,这是最终版本:

TelephonyManager tm = 
(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
       Class clazz = Class.forName(tm.getClass().getName());
       Method m = clazz.getDeclaredMethod("getITelephony");
       m.setAccessible(true);
       ITelephony it = (ITelephony) m.invoke(tm);
       if(it.isSimPinEnabled())
       {
                //This should work;
       }

【讨论】:

  • 感谢您的回答,但我已经尝试过这种方法。如果手机解锁,manager.getSimState() 总是返回 5(SIM_STATE_READY)。它指的是当前状态,而不是设置选项值。
  • 是的,如果您的代码是在启动时运行的服务,那么当手机启动时未输入代码时,您会得到这些状态...如果您已经输入了代码并正在说明在那次事件之后你的程序,你会得到 SIM_STATE_READY
  • 是的,如果没有更好的解决方案,这将是一个替代答案,谢谢~
  • 查看这个链接:netmite.com/android/mydroid/frameworks/base/telephony/java/com/… /** * 检查是否启用了 sim pin lock * 这是一个同步调用,它返回缓存的 pin 启用状态 * * @return true for sim lock enabled * false for sim lock disabled */ boolean getSimLockEnabled ();
  • 我尝试添加 ITelephony.aidl 以使用此方法,但即使我打开 PIN 选项,it.isSimPinEnabled() 总是返回 false。为了测试项目是否配置良好,我注意到 it.isDataConnectivityPossible() 如果我更改手机状态(切换到 airplain 模式)确实返回正确的值有什么想法吗? thx~ (htc hero 2.1 update1下测试)
【解决方案2】:

由于 getSimLockEnabled 总是为我返回 false,我必须找到另一种方法。

请参阅https://stackoverflow.com/a/12748638/314089 以获得答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2014-08-20
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    相关资源
    最近更新 更多