Sim Application Toolkit - 无法在选择时显示文本(实际上没有)

时间:2012-10-06 17:36:08

标签: javacard sim-toolkit

我尝试开发一个Sim Application Toolkit Applet。在互联网上发现了很多简单的例子,但没有成功..

问题是; 我的菜单条目来自STK菜单,但如果我选择它,则没有任何反应..我尝试在事件EVENT_MENU_SELECTION上显示文本。 (实际上不仅显示文本,还有短信,ussd,子项也不起作用..)

  • 我有来自制造商的真实SIM卡,用auth键开发和测试一些小程序。
  • 我在Android 2.3 NFC智能手机上进行测试。
  • 要将小程序加载到SIM卡中,我使用ACR1281U作为读卡器和Giesecke& Devrient JLoad 2.3.0 as loader。
  • 在Sim Toolkit中默认为菜单项,工作正常。

这是我的示例代码..希望任何人都有一个想法..(可能在加载applet时有一些特定的安装参数?)

提前致谢, Kutschka

package proactive_cmd;

import javacard.framework.*;
import sim.access.*;
import sim.toolkit.*;

public class display_text extends Applet 
  implements ToolkitConstants, ToolkitInterface
{
  private static final byte CMD_QUALIFIER = (byte)0x80;

  private byte[] menuEntry = {'M','y','M','e','n','u'};
  private byte[] textBuf = {'H','e','l','l','o'};

  private ToolkitRegistry reg;
  private SIMView gsmFile;

  public display_text() {
    //Get the GSM application reference
    gsmFile = SIMSystem.getTheSIMView();

    reg = ToolkitRegistry.getEntry();

    reg.initMenuEntry(menuEntry,
                      (short) 0, 
                      (short) menuEntry.length,
                      PRO_CMD_DISPLAY_TEXT,
                      false,
                      (byte) 0,
                      (short) 0);
  }

  public static void install(byte[] bArray, short bOffset, byte bLength)
    throws ISOException
  {

    display_text dt = new display_text();
    dt.register();
  }

  public void processToolkit(byte event)
    throws ToolkitException
  {
    ProactiveHandler ph = ProactiveHandler.getTheHandler();

    if (event == EVENT_MENU_SELECTION) {


       ph.init((byte) PRO_CMD_DISPLAY_TEXT, (byte) CMD_QUALIFIER, DEV_ID_DISPLAY);
       ph.appendTLV((byte)(TAG_TEXT_STRING | TAG_SET_CR),
                    textBuf,
                    (short) 0, 
                    (short) textBuf.length);
      ph.send();
    }
  }


  public void process(APDU apdu) {
    if (selectingApplet()) {
      return;
    }
  }

}

1 个答案:

答案 0 :(得分:1)

要使用STK命令,您必须正确安装applet。对于SIM Toolkit,它必须是INSTALL MAKE SELECTABLE命令中的CA标记。如果您将使用UICC工具包,则必须使用EA标记。有关详细信息,请参阅ETSI 102 226 standard