Java me 用于NFC阅读的j2me程序赢得';签字后不工作
我正在尝试制作一个小程序,读取NCF卡(用于SonimXP1301手机) 当程序未签名时,它会工作,但每次读/写操作或NFC读取都会请求用户的许可 在程序签署后(使用官方Sonim证书),它甚至不会启动。。。只是抛出消息“Java应用程序已停止”,没有任何关于发生了什么的详细信息 我不知道从哪里开始解决这个问题。。。一种猜测是,NetBeans的“API权限”设置中缺少一些复选框,但这只是一个疯狂的问题 我不认为我的代码有任何问题,因为Sonim提供的示例代码也有同样的问题-当它没有签名时,程序工作,但签名后,它只说“Java应用程序停止” (我试着向Sonim Support询问这个问题,但大家都沉默了。) 以下是Sonim自己的NFC阅读示例代码:Java me 用于NFC阅读的j2me程序赢得';签字后不工作,java-me,nfc,Java Me,Nfc,我正在尝试制作一个小程序,读取NCF卡(用于SonimXP1301手机) 当程序未签名时,它会工作,但每次读/写操作或NFC读取都会请求用户的许可 在程序签署后(使用官方Sonim证书),它甚至不会启动。。。只是抛出消息“Java应用程序已停止”,没有任何关于发生了什么的详细信息 我不知道从哪里开始解决这个问题。。。一种猜测是,NetBeans的“API权限”设置中缺少一些复选框,但这只是一个疯狂的问题 我不认为我的代码有任何问题,因为Sonim提供的示例代码也有同样的问题-当它没有签名时,程序
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.contactless.TargetListener;
import javax.microedition.contactless.DiscoveryManager;
import javax.microedition.contactless.TargetProperties;
import javax.microedition.contactless.TargetType;
import javax.microedition.contactless.ContactlessException;
/**
* @author parthosarkar
*/
public class TestNFCMidlet extends MIDlet implements TargetListener{
Form frm;
DiscoveryManager dm = DiscoveryManager.getInstance();
public void startApp() {
this.frm = new Form("Read Tag");
registerTargetListeners();
final Command localCommand = new Command("Exit", 7, 1);
frm.addCommand(localCommand);
frm.setCommandListener(new CommandListener(){
public void commandAction(Command paramCommand, Displayable paramDisplayable)
{
if (paramCommand == localCommand)
notifyDestroyed();
}
});
Display.getDisplay(this).setCurrent(this.frm);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void registerTargetListeners() {
try {
// Register listener for each of the supported types
dm.addTargetListener(this, TargetType.NDEF_TAG);
dm.addTargetListener(this, TargetType.ISO14443_CARD);
dm.addTargetListener(this, TargetType.RFID_TAG);
} catch (ContactlessException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public void targetDetected(TargetProperties[] targetProperties) {
if (targetProperties != null) {
int NB_properties = targetProperties.length;
for (int i=0;i < NB_properties;i++) {
frm.append(targetProperties[i].getUid());
}
} else {
frm.append("No Data");
}
}
}
import javax.microedition.midlet.*;
导入javax.microedition.lcdui.*;
导入javax.microedition.contactless.TargetListener;
导入javax.microedition.contactless.DiscoveryManager;
导入javax.microedition.contactless.TargetProperties;
导入javax.microedition.contactless.TargetType;
导入javax.microedition.contactless.ContactlessException;
/**
*@作者帕托沙卡
*/
公共类TestNFCMidlet扩展了MIDlet实现TargetListener{
表格frm;
DiscoveryManager dm=DiscoveryManager.getInstance();
公开作废startApp(){
this.frm=新表格(“读取标签”);
registerTargetListeners();
最终命令localCommand=新命令(“退出”,7,1);
frm.addCommand(localCommand);
setCommandListener(新CommandListener(){
public void commandAction(命令paramCommand,可显示paramDisplayable)
{
if(paramCommand==localCommand)
通知销毁();
}
});
Display.getDisplay(this.setCurrent)(this.frm);
}
公共无效pauseApp(){
}
公共应用程序(布尔无条件){
}
公共无效注册表TargetListeners(){
试一试{
//为每个受支持的类型注册侦听器
dm.addTargetListener(这是TargetType.NDEF_标记);
dm.addTargetListener(这是TargetType.ISO14443_卡);
dm.addTargetListener(这是TargetType.RFID_标签);
}catch(非接触式Sexception ce){
printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}
}
检测到公共无效TargetProperties(TargetProperties[]TargetProperties){
if(targetProperties!=null){
int NB_properties=targetProperties.length;
对于(int i=0;i
我终于找到了一个解决方案:我必须先安装程序的未签名版本,使用一段时间,然后安装同一程序的签名版本。。。现在“java应用程序停止”消息消失了。这看起来像是手机本身的一个bug。你可能想联系制造商。是的,我已经通知了制造商。