我尝试开发一个 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;
}
}
}