站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题我的程序放到手机上点击WAP连接,选择否,返回到住CANVERS再点选项就没反映了

我的程序放到手机上点击WAP连接,选择否,返回到住CANVERS再点选项就没反映了

摘要: 我的程序放到手机上点击WAP连接,选择否,返回到住CANVERS再点选项就没反映了


点WAP连接,弹出一个对话框,问你是否连接WAP。选择是,程序运行没什么问题,回到主界面,所有功能点击都还正常,可就是一选否,回到主界面,就选啥都没反映了。
是不是手机线程的问题啊?
import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;
public class ClientMIDlet extends MIDlet implements Runnable{

public static Display display;
public static ClientMIDlet instance=null;
public static int count=0;
private Thread application = null;

public static MainCanvas mainCanvas=null;

public ClientMIDlet(){
instance=this;
display=Display.getDisplay(this);
mainCanvas=new MainCanvas(this);

}

public void run(){
while(true){
mainLoop();
try{
Thread.sleep(80);
}catch(Exception e){
//new Thread(this).start();

}
}
}
public void mainLoop(){
mainCanvas.repaint();
count++;
if(count==100){
count=0;
}
}

public void startApp(){
display.setCurrent(mainCanvas);
if(application == null){
application = new Thread(this);
}
application.start();

}
public void pauseApp(){

}
public void destroyApp(boolean unconditional){
count=0;
}
public void quit(){
destroyApp(false);
notifyDestroyed();
}
/**
*
* @param url
*/
public void startwap(String url){
AccessThread at = new AccessThread(url, this);
at.start();
}

public void startIVR(){
boolean flag = false;
try {
flag = platformRequest("tel:125904920");
}catch(ConnectionNotFoundException e){
e.printStackTrace();
}
System.out.println(flag);
}

}



//////////////////////////////////////////////////
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
class MainCanvas extends Canvas implements CommandListener{
private ClientMIDlet midlet;
static int SCREEN_WIDTH,SCREEN_HEIGHT;
Command Cmd_ok,Cmd_logout,Cmd_exit,Cmd_back,Cmd_nextpage;
/**避免重复*/
boolean b;
Image imgItem[]=new Image[9];
Image bg;
int curX,curY;

int n=0;
Image imgtuxiazai;//要显示的图片
Image imglingxiazai;
Image imghelp1;
Image imghelp2;
int status=0;
/**
* 发送短信
* @param content
* @param phoneNumber
* @return
*/
// need import wmapi
public static boolean send(String content, String phoneNumber)
{
/*
* content 短信息内容 phoneNumber 手机号码 发送成功返回true,否则返回false
*/
try
{
String address = "sms://" + phoneNumber;
MessageConnection conn = (MessageConnection) Connector.open(address);// 建立连接

TextMessage msg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE);// 设置短信息类型为文本,短信息有文本和二进制两种类型
msg.setPayloadText(content);// 设置信息内容
conn.send(msg);// 发送

}
catch (Exception e)
{
System.out.println("发送失败");
return false;
}
System.out.println("发送成功");
return true;
}


MainCanvas(ClientMIDlet midlet){
this.midlet=midlet;
// this.setFullScreenMode(true);
SCREEN_WIDTH=getWidth();
SCREEN_HEIGHT=getHeight();

try{
imgtuxiazai = Image.createImage("/tuxiazai.png");
imglingxiazai= Image.createImage("/lingxiazai.png");
bg=Image.createImage("/bg.png");
imghelp1 = Image.createImage("/font4.png");
imghelp2 = Image.createImage("/font5.png");
for(int i=0;i imgItem[i]=Image.createImage("/"+i+".png");
}catch(Exception e){System.out.println("err:"+e);}

Cmd_ok=new Command("确定",Command.OK,1);
Cmd_exit = new Command("退出",Command.EXIT,1);
Cmd_back = new Command("返回",Command.BACK,1);
Cmd_nextpage = new Command("下一页",Command.ITEM,1);
addCommand(Cmd_ok);
addCommand(Cmd_back);
addCommand(Cmd_exit);
setCommandListener(this);
}

public void commandAction(Command c,Displayable d){
if(c==Cmd_exit)
{
midlet.quit();
}
else if(c==Cmd_back)
{
n=0;
removeCommand(Cmd_nextpage);
}
else if(c==Cmd_nextpage)
{
n=9;
}
else if(c==Cmd_ok){
if(!b){
b=true;
int id=curX+curY*3;
if(id==0){//私人护理部
Thread t = new Thread() {
public void run() {
send("f", "50133");
}
};
t.start();
}else if(id==1){//炫铃狂下载
midlet.startwap("http://218.206.94.249/~superwap/wap/php2/index.php?svr_id=18855");
}else if(id==2){//都市夜生活,图片下载
midlet.startwap("http://218.206.94.249/~superwap/wap/php2/index.php?svr_id=18854");
}else if(id==3){//专家听诊室
midlet.startIVR();
}else if(id==4){//修身养性
Thread t = new Thread() {
public void run() {
send("f", "50133");
}
};
t.start();
}else if(id==5){//免费地带,铃下载
midlet.startwap("http://218.206.94.249/~superwap/wap/php2/index.php?svr_id=18855");
}else if(id==6){//点击健康百家谈
midlet.startwap("http://218.206.94.249/~superwap/wap/php2/index.php?svr_id=18277");
}else if(id==7){//更多精彩
midlet.startwap("http://218.206.94.249/~superwap/wap/php2/index.php?svr_id=18857");
}else if(id==8){//使用帮助
n=8;
addCommand(Cmd_nextpage);
}
System.out.println(id);
b=false;
}
}
repaint();
}

public void paint(Graphics g){
g.setColor(0xffffff);
g.fillRect(0,0,getWidth(),getHeight());
if (n == 2){
g.drawImage(imgtuxiazai,0,0,20);
}
else if(n==8)
{
g.drawImage(imghelp1,0,0,20);
}
else if(n==9)
{
g.drawImage(imghelp2, 0, 0, 20);
}
else if(n==5)
{
g.drawImage(imglingxiazai,0,0,20);
}
else
{
g.drawImage(bg,0,0,0);
for(int i=0;i<3;i++){//row
for(int j=0;j<3;j++){//col
if(i*3+j if(curX+curY*3==i*3+j){
if(ClientMIDlet.count%8<2){
drawPic(1+j*58,i*48,0,0,58,48,imgItem[i*3+j],g);
}else if(ClientMIDlet.count%8<5){
drawPic(1+j*58,i*48,58,0,58,48,imgItem[i*3+j],g);
}else{
drawPic(1+j*58,i*48,58*2,0,58,48,imgItem[i*3+j],g);
}
}else{
drawPic(1+j*58,i*48,0,0,58,48,imgItem[i*3+j],g);
}
}
}
}
}
}
private void drawPic(int sx, int sy,int px ,int py, int pw, int ph,Image img,Graphics g){
g.setClip(sx,sy,pw,ph);
g.drawImage(img,sx-px,sy-py,20);
g.setClip(0,0,getWidth(),getHeight());
}

public void keyPressed(int keyCode){
if (keyCode == KEY_NUM2 || keyCode == -1) {
curY--;
if(curX+curY*3<0){
curY=imgItem.length/3;
if(curX+curY*3>=imgItem.length){
curY-=1;
}
}
}else if (keyCode == KEY_NUM8 || keyCode == -2) {
curY++;
if(curX+curY*3>=imgItem.length){
curY=0;
}
}else if (keyCode == KEY_NUM4 || keyCode == -3) {
curX--;
if(curX+curY*3<0){
curX=imgItem.length%3-1;
curY=imgItem.length/3;
}else{
if(curX<0){
curX=2;
curY--;
if(curX+curY*3<0){
curX=imgItem.length%3-1;
curY=imgItem.length/3;
}
}
}

}else if (keyCode == KEY_NUM6 || keyCode == -4) {
curX++;
if(curX+curY*3>=imgItem.length){
curX=0;
curY=0;
}else{
if(curX>2){
curX=0;
curY++;
if(curX+curY*3>=imgItem.length){
curX=0;
curY=0;
}
}
}
}
}

public void showNotify(){

}
public void hideNotify(){

}

}



///////////////////
import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.*;
public class AccessThread extends Thread{

ClientMIDlet midlet;
String url;
public AccessThread(String url, ClientMIDlet midlet){
this.url = url;
this.midlet = midlet;
}
public void run(){
boolean flag = false;
try {
flag = midlet.platformRequest(url);
}catch(ConnectionNotFoundException e){
e.printStackTrace();
}
System.out.println(flag);
}
}



//AccessThread.run
boolean flag = false;
try
{
flag = midlet.platformRequest(url);
}catch(ConnectionNotFoundException e)
{
e.printStackTrace();
}
if(flag==false)
midlet.resumeRequest();


试下上面代码,本人无真机测试


好的大哥 我试试哈
先谢了


不成,还那样 啊


你自己找一个工具调试下,看看哪句出错的


那你打印输出的 flag 是true还是false?


try{
网络连接。。
}catch(Exception e){
如果连接失败的话你要在这里面做相应的处理,就是决定你失败后的界面该显示哪个,哪些线程该结束
}


我没法看打印,只有在手机里头,才能调试!看不到打印输出


如果选择否的话,必须捕捉,捕捉后不管处理与否,程序都还可以运行,如果不捕捉就不行了。


有个j2meunit
可以在手机上调试的
推荐你用下


好的。我试试


↑返回目录
前一篇: MIDP中的动画
后一篇: J2ME开发,跪求如何全屏显示图片!不分任何手机型号!