Moto V300 用的模拟器是 EmulatorA.1
用手机的浏览器是可以访问,但程序里就是不行!是否要做哪些设置啊?
请问主要是由于哪些原因才会出现java.lang.SecurityException ?
手机能设置访问级别吗?
------解决方法--------------------------------------------------------
根据规范,MIDlet只能由应用程序管理器产生.我们不能自己在程序里面new出其它的MIDlet,并调用其生命周期相关的函数(startApp(),pauseApp(),destroyApp(),这样做将引发SecurityException.
------解决方法--------------------------------------------------------
MIDP里面提供的安全机制是这样的,MIDlet suite是在一个Domain里面运行的,默认的情况下这个Domain叫做untrusted,所以你在进行联网的时候一般模拟器会提示你MIDlet要进行联网,这个不是免费的 是不是继续?如果你选择this time,ask me next time,那么 或者 always那么这个联网会继续进行的。但是你选择否定的选项的时候,那么他会抛出java.lang.SecurityException,应该就是你说的那个吧。
下面的代码是个联网的例子。你参考以下吧,我在模拟器中没有遇到抛java.lang.SecurityException得问题。
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class HTTPMIDlet
extends MIDlet
implements CommandListener, Runnable {
private Display mDisplay;
private Form mMainScreen;
public HTTPMIDlet() {
mMainScreen = new Form("HTTPMIDlet");
mMainScreen.append(
"Press OK to create an HTTP connection.");
Command exitCommand =
new Command("Exit", Command.EXIT, 0);
Command okCommand =
new Command("OK", Command.OK, 0);
mMainScreen.addCommand(exitCommand);
mMainScreen.addCommand(okCommand);
mMainScreen.setCommandListener(this);
}
public void startApp() {
if (mDisplay == null)
mDisplay = Display.getDisplay(this);
mDisplay.setCurrent(mMainScreen);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {}
// CommandListener method
public void commandAction(Command c, Displayable s) {
if (c.getCommandType() == Command.EXIT)
notifyDestroyed();
else if (c.getCommandType() == Command.BACK)
mDisplay.setCurrent(mMainScreen);
else if (c.getCommandType() == Command.OK) {
// Put up a wait screen.
Form waitForm = new Form("Connecting...");