在索尼爱立信JP7平台上自动启动MIDlet
开机就能自动启动MIDlet一直是J2ME开拓者的空想,这一空想在索尼爱立信的JP7平台上实现了。不外需要留意的是早期的几款机型不支持,好比K790等。详细请参考索尼爱立信的手册。
开机自启动成果是通过Push注册来完成的,因此可以利用两种方法来注册。第一种通过在jad文件注明PUSH注册的方法即可,如下。
//MIDlet-Push-<n>: <ConnectionURL>, <MIDletClassName>, <AllowedSender>
MIDlet-Push-1: autostart://:, AutoStartStatic, *
请留意URL的写法是autostart://:
假如想动态注册,可以通过下面的要领。
//Registers the pushRegistry
public void Register(){
// List of registered push connections.
String connections[];
// Check to see if the connection has been registered.
// This is a dynamic connection allocated on first
// time execution of this MIDlet.
connections = PushRegistry.listConnections(false);
if (connections.length == 0) {
try {
//Register so the MIDlet will wake up when phone is started.
PushRegistry.registerConnection("autostart://:", "AutoStartDyn", "*");
sDisplayString = "MIDlet is registered";
} catch (Exception ex) {
System.out.println("Exception: " + ex);
sDisplayString = "Fail: " + ex;
}
} else {
sDisplayString = "Already registered";
}
displayForm.deleteAll();
displayForm.append(sDisplayString);
}
//Unregisters the pushRegistry
public void Unregister(){
if (PushRegistry.unregisterConnection("autostart://:")){
System.out.println("The pushRegistry is unregistered");
sDisplayString = "MIDlet is unregistered.";
}else{
System.out.println("There is no pushRegistry to unregister");
sDisplayString = "No MIDlet to unregister or failed to unregister";
}
displayForm.deleteAll();
displayForm.append(sDisplayString);
}
由于手头没有SonyEricsson JP7平台的手机,因此没有步伐测试开机自动启动成果。有条件的可以本身测试一下。
原文地点:http://developer.sonyericsson.com/site/global/techsupport/
tipstrickscode/java/p_autostarting_jp7midlets.jsp