手机发送短信程序

阅读更多

  最近要考试了,复习太无聊了,学习了一会J2ME,感觉比J2SE简单的多了,一直以来我多没有很好的解决界面问题(很不爽呀)。学了一会儿J2ME,感觉很简单,乘热打铁写了一个发送短信的小程序,还有几个问题没有解决(复制,粘贴, 从电话薄中导入联系人)。有兴趣的人可以自己写(查看一下手机厂商提供的API就能解决了)。下面是代码:

欢迎界面:

package com.ui;

import java.io.IOException;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.ImageItem;
import javax.microedition.lcdui.Item;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class Welcome extends MIDlet implements CommandListener{
	/******************************************************/
	/*                欢迎界面                                                                            */
	/******************************************************/
	
	private Display display;
	private Form form = new Form("");
	private Command cmdNextPage;
	private Command cmdExit;
	private Image image;
	private ImageItem welcomItem;
	
	public Welcome() {
		try {
			image = Image.createImage("/rss.png");	
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		welcomItem = new ImageItem("欢迎使用本程序", image, Item.LAYOUT_CENTER, "");
		cmdExit = new Command("退出", Command.EXIT, 1);
		cmdNextPage = new Command("继续", Command.SCREEN, 1);
	}

	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

	}

	protected void pauseApp() {

	}

	protected void startApp() throws MIDletStateChangeException {
		display = Display.getDisplay(this);
		display.setCurrent(form);
		
		form.addCommand(cmdExit);
		form.addCommand(cmdNextPage);
		form.setCommandListener(this);
		
		form.append(welcomItem);
	}

	public void commandAction(Command cmd, Displayable dis) {
		if(cmd == cmdExit) {
			this.notifyDestroyed();
		}else  if(cmd == cmdNextPage) {
			WriteMsg writemsg = new WriteMsg("写信息");
			display.setCurrent(writemsg);
		}
		
	}

}

 写短信界面:

package com.ui;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemCommandListener;
import javax.microedition.lcdui.TextField;
import com.classes.*;

public class WriteMsg extends Form implements  ItemCommandListener, CommandListener {
	/*****************************************************************/
	/*                           编辑短信                                                                           */
	/*****************************************************************/

	private Command cmdDel; // 删除单个字符
	private Command cmdSend; // 发送
	private Command cmdInsertLinkMan; // 增加联系人
	private Command cmdCopy; // 自由复制
	private Command cmdPaste; // 粘贴
	private Command cmdExit; // 退出
	
	private TextField tel;   //电话号码输入框
	private TextField text;  //短信内容输入框

	public WriteMsg(String title) {
		super(title);
		this.setCommandListener(this);
		cmdDel = new Command("删除", Command.CANCEL, 1);

		cmdSend = new Command("发送", Command.SCREEN, 1);
		this.addCommand(cmdSend);

		cmdInsertLinkMan = new Command("增加联系人", Command.SCREEN, 1);
		this.addCommand(cmdInsertLinkMan);

		cmdCopy = new Command("复制", Command.SCREEN, 1);
		this.addCommand(cmdCopy);

		cmdPaste = new Command("粘贴", Command.SCREEN, 1);
		this.addCommand(cmdPaste);

		cmdExit = new Command("退出", Command.SCREEN, 1);
		this.addCommand(cmdExit);

		
		tel = new TextField("收件人", "", 15, TextField.PHONENUMBER);
		tel.addCommand(cmdDel);
		tel.setItemCommandListener(this);
		this.append(tel);
		
		text = new TextField("", "", 300, TextField.ANY);
		text.setLayout(Item.LAYOUT_2);
		text.addCommand(cmdDel);
		text.setItemCommandListener(this);
		this.append(text);
	}


	public void commandAction(Command cmd, Displayable dis) {
		if(cmd == cmdSend) {
			SendMsg sendMsg = new SendMsg(text.getString());
			if(sendMsg.sendMsg(tel.getString())) {
				System.out.println("发送成功");
			}else {
				System.out.println("发送失败");
			}
		}else  if(cmd == cmdInsertLinkMan) {
			
		}else  if(cmd == cmdCopy) {
			
		}else  if(cmd == cmdPaste) {
			
		}else  if(cmd == cmdExit) {
			System.exit(0);
		}
		
	}


	public void commandAction(Command cmd, Item item) {
		
		if(item == tel) {
			int offset = tel.getCaretPosition();
			if(offset >= 1) {
				tel.delete(offset-1, 1);
			}
		}else  if(item == text) {
			int offset = text.getCaretPosition();
			if(offset >= 1) {
				text.delete(offset-1, 1);
			}
		}
	}

}

 发送短信的类:

package com.classes;

import java.io.IOException;

import javax.microedition.io.Connector;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;

public class SendMsg {
	private String content;   //短信内容
	
	public SendMsg(String content) {
		this.content = content;
	}
	
	public boolean sendMsg(String tel) {
		boolean boo = false;
		String address = "sms://"+tel;   //目标地址
		MessageConnection conn = null;
		try {
			conn = (MessageConnection) Connector.open(address);   //连接这个address端口,也就是目标地址
			TextMessage msg = (TextMessage) conn
		    .newMessage(MessageConnection.TEXT_MESSAGE); //创建一个要被发送的消息实例
			msg.setPayloadText(content);		//设置信息内容
			conn.send(msg);    //发送短信
			boo = true;   //发送成功
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return boo;
	}
}
 

在本人手机上测试成功了。祝各位好运!!!

你可能感兴趣的:(UI,J2SE)