Java-Problem mit J2ME
-
hallo
ich habe ein Problem mit der J2ME Wireless Toolkit Version 2.2
Ich bekomme immer folgende Fehlermeldung:
java.lang.SecurityException: Application not authorized to access the restricted API
at com.sun.midp.security.SecurityToken.checkIfPermissionAllowed(+40)
at com.sun.midp.security.SecurityToken.checkIfPermissionAllowed(+7)
at com.sun.midp.midletsuite.MIDletSuiteImpl.checkIfPermissionAllowed(+8)
at com.sun.midp.midlet.MIDletState.<init>(+78)
at javax.microedition.midlet.MIDletProxy.<init>(+5)
at javax.microedition.midlet.MIDlet.<init>(+13)
at SimpleGETExample.<init>(+4)
at Hello.commandAction(+74)
at javax.microedition.lcdui.DisplayDisplayManagerImpl.commandAction(+10)
at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+250)ich habe zwei klassen, die Hauptklasse erzeugt zwei eingabefelder und erstellt eine eine Instanz von einer anderen Klasse, die als Übergabeparameter eine URL (wird aus den beiden Feldern erzeugt) bekommt.
Bei der alten Toolkit Version 1.0 funktioniert alles
Auf dem Handy (Razor V3) wird die Fehlermeldung "Application Error" angezeigt
Vielleicht hat irgendwer eine Idee
Danke im VorausBTW hier sind die Quelltexte der beiden Dateien
import javax.microedition.lcdui.;
import javax.microedition.midlet.;
import java.io.;
import javax.microedition.io.;public class Hello extends MIDlet implements CommandListener {
Form mForm;
TextField mTextField;
TextField mTextField2;
String ServerName;
String Befehl;
String url = "geheime URL";public Hello() {
mForm = new Form("Hello");
mTextField = new TextField("Servername:", "", 12, TextField.ANY);
mForm.append(mTextField);
mTextField2 = new TextField("Befehl: ", "", 12, TextField.ANY);
mForm.append(mTextField2);
Command okCommand = new Command("OK", Command.OK, 1);
mForm.addCommand(okCommand);
mForm.setCommandListener(this);
}public void commandAction(Command c, Displayable d) {
ServerName = mTextField.getString();
Befehl = mTextField2.getString();
url = url + ServerName + "&befehl=" + Befehl;
SimpleGETExample hc = new SimpleGETExample(this, url);
}public void startApp() {
Display.getDisplay(this).setCurrent(mForm);
}public void pauseApp() {}
public void destroyApp(boolean unconditional) {
this.notifyDestroyed();
}}
import java.io.;
import javax.microedition.io.;
import javax.microedition.lcdui.;
import javax.microedition.midlet.;public class SimpleGETExample extends MIDlet{
private Display dsp;
private Hello midlet;String url = "";
public SimpleGETExample(Hello m,String n) {
midlet = m;
url = n;
dsp = Display.getDisplay(midlet);}
public void startApp() {
try {
testGET(url);
} catch (IOException e) {
System.out.println("IOException " + e);
e.printStackTrace();
}
}public void pauseApp() { }
public void destroyApp(boolean unconditional) { }void testGET(String url) throws IOException {
HttpConnection connection = null;
InputStream is = null;
OutputStream os = null;
StringBuffer stringBuffer = new StringBuffer();
TextBox textBox = null;try {
connection = (HttpConnection)Connector.open(url);
connection.setRequestMethod(HttpConnection.GET);
connection.setRequestProperty("IF-Modified-Since","20 Jan 2001 16:19:14 GMT");
connection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Confirguration/CLDC-1.0");
connection.setRequestProperty("Content-Language", "en-CA");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
os = connection.openOutputStream();
is = connection.openDataInputStream();
int ch;
while ((ch = is.read()) != -1) {
stringBuffer.append((char) ch);
}
textBox = new TextBox("Simple GET Test", stringBuffer.toString(), 1024, 0);} finally {
if(is!= null) {
is.close();
}
if(os != null) {
os.close();
}
if(connection != null) {
connection.close();
}
}
dsp.setCurrent(textBox);
}
}SimpleGETExample schickt die Daten zu einem PHP-Skript, das Daten auswertet und eine Meldung zurückschickt
-
Das wird wohl daran liegen, dass ein MIDlet von einem anderen MIDlet augerufen wird. Sollte ein solches Verhalten nicht unbedingt notwendig sein, dann sollte man darauf verzichten. Nimm im weiteren Verlauf eine einfache Klasse, die nicht von MIDlet erbt. So wie es in deinem Beispiel aussieht, ist das auch ausreichend.
Du kannst aber auch mal hier nachschauen:
http://forum.java.sun.com/thread.jspa?threadID=684046&messageID=3985002
Das Problem gab es schon sehr oft.
-
Danke erstmal,
ich konnte mit deiner Hilfe mein Problem lösen
Aber es gibt schon wieder ein neues Problem, weil das Programm mit dem Toolkit auf dem Rechner funktioniert, aber später auf nem Motorola Razor V3 nicht geht.
die Daten werden geschickt ( wird auf dem Handy angezeigt ), aber es kommt keine Antwort zurück.Das ist echter Mist
Bitte helft mir
-
Hallo,
ich merke gerade, dass es Leute hier gibt, die sich mit Handy Javaprogrammierung beschäftigen. Ich habe gerade begonnen ein Buch zur Micro Edition zu lesen. Was mir nicht ganz klar geworden ist bzw. was ich gerne noch wüsste: Wenn ich ein Java Programm als Dienst auf dem Handy laufen lassen will und zum Beispiel ein Event aufgrund einer Terminerreichung auslösen will, wie stelle ich das an, dass auf dem Handy ein Programm praktisch immer im Hintergrund läuft?
Eine kurze Antwort zu diesem Thema wäre super. Danke vorab an Euch.
Viele Grüsse
Oliver