5

我尝试开发一个 Sim Application Toolkit Applet.. 在互联网上找到了许多简单的示例,但没有成功..

问题是; 我的菜单条目出现在 STK 菜单中,但如果我选择它,什么也不会发生。我尝试在事件 EVENT_MENU_SELECTION 上显示文本。(其实不光显示文字,短信、ussd、子项也不行..)

  • 我有制造商提供的真实 sim 卡,可以使用身份验证密钥开发和测试一些小程序。
  • 我在 Android 2.3 NFC 智能手机上对其进行了测试。
  • 要将小程序加载到 SIM 中,我使用 ACR1281U 作为读取器,使用 Giesecke & Devrient JLoad 2.3.0 作为加载器。
  • 在 Sim Toolkit 中默认是一个菜单项,工作正常。

这是我的示例代码..希望有人有想法..(也许加载小程序时有一些特定的安装参数?)

提前致谢, 库奇卡

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;
    }
  }

}
4

1 回答 1

1

为了使用 STK 命令,您必须正确安装您的小程序。对于 SIM Toolkit,它必须是 INSTALL MAKE SELECTABLE 命令中的 CA 标签。如果您要使用 UICC 工具包,则必须使用 EA 标签。详情请参阅ETSI 102 226 标准

于 2012-10-08T21:19:39.293 回答