【问题标题】:Android set or reset SIM card PIN code programmaticallyAndroid 以编程方式设置或重置 SIM 卡 PIN 码
【发布时间】:2014-09-11 09:43:34
【问题描述】:

我已经在下面实现了解锁我的应用程序(此代码仅适用于系统应用程序,所以我将我的应用程序作为系统应用程序完成)

TelephonyManager manager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
int state = manager.getSimState();

if(state == TelephonyManager.SIM_STATE_PIN_REQUIRED || state == TelephonyManager.SIM_STATE_PUK_REQUIRED)
{
   try {

      @SuppressWarnings("rawtypes")
      Class clazz = Class.forName(manager.getClass().getName());

       Method m = clazz.getDeclaredMethod("getITelephony");
       m.setAccessible(true);
       ITelephony it = (ITelephony) m.invoke(manager);
       if (it.supplyPin(simPin)) {
           Toast.makeText(context,"SIM UnLocked",Toast.LENGTH_LONG).show();
       } else {
           Toast.makeText(context,"SIM UNLOCK FAILED",Toast.LENGTH_LONG).show();
       }

    } catch (Exception e) {
    // 
        e.printStackTrace();
    }

}else{
    Toast.makeText(context,"SIM is not Locked",Toast.LENGTH_LONG).show();
}

它对我来说很好,但现在我需要以编程方式设置或重置 SIM PIN,如果可能的话,请告诉我。如果可能的话,我该如何实现呢?

【问题讨论】:

  • AFAIK 你可以为此执行 USSD 代码。查看stackoverflow.com/questions/7225100/… 并找到USSD 来设置/更改引脚。我认为它可以工作
  • 感谢@PedroOliveira 的回复。但是如何发送 PIN 更改请求?
  • 你可以在这里berlin.ccc.de/~tobias/mmi-ussd-ss-codes-explained.html获得更多信息。检查“SIM 控制代码”部分
  • 但我认为 pin 保存在 SIM(本地)中。我不认为在更改密码时我们会向网络发送请求,但我认为它会在本地保存到 SIM 中,而无需任何网络请求。如果我错了,请告诉我
  • 你是对的。但是这段代码是在本地执行的。您不必按调用来执行此代码。但是,经过一番搜索,我认为您不能使用意图来执行此代码。但值得一试。尝试在手机小键盘上执行代码,然后使用意图尝试

标签: java android


【解决方案1】:
String ussdCode = "**04*"+oldPin+"*"+newPin+"*"+newPin+"#";
startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:" + ussdCode)));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多