如何使用Java Card 2.2.2 SIM卡小程序中的特定URL启动浏览器?

时间:2017-01-24 10:56:06

标签: java smartcard javacard sim-card sim-toolkit

我正在尝试构建一个应用程序,其中我的应用程序将APDU发送到我的SIM卡上的Java Card小程序。当收到此apdu时,我希望我的Applet使用特定的URL启动浏览器。我可以在Java Card 3.0 Connected版本中做同样的事情。我已经读过Java Card 2.2.2在启动浏览器的主动处理程序中有一个选项,但我找不到它。如果有人能告诉我该怎么做,我真的很感激。

1 个答案:

答案 0 :(得分:3)

是的,有可能。但是,很多手机(特别是那些运行iOS的手机)都不支持这种功能,所以你应该先检查TERMINAL PROFILE命令的输出。

import sim.toolkit.*;
...

private final static byte[] URL = {
  (byte)'h', (byte)'t', (byte)'t', (byte)'p', (byte)':', (byte)'/', (byte)'/', (byte)'w', (byte)'w', (byte)'w', (byte)'.', (byte)'g', (byte)'o', (byte)'o', (byte)'g', (byte)'l', (byte)'e', (byte)'.', (byte)'c', (byte)'o', (byte)'m'
};
private static final byte PROFILE_LAUNCH_BROWSER = (byte)70;

private static final void browse() throws ToolkitException {
    if (MEProfile.check(PROFILE_LAUNCH_BROWSER)) { //checking if the device supports this proactive command
        ProactiveHandler proactiveHandler = ProactiveHandler.getTheHandler();
        proactiveHandler.init(ToolkitConstants.PRO_CMD_LAUNCH_BROWSER, (byte)0x00, ToolkitConstants.DEV_ID_ME);
        proactiveHandler.appendTLV(ToolkitConstants.TAG_URL, URL, (short)0, (short)URL.length);
        proactiveHandler.send();
    } else {
        //feature not supported, throw an exception or do something like that
    }
}