📄 threadsendmms.java
字号:
/*///////////////////////////////////////////////////////////////////////////////
//文档生成日期:2005.11.3
//
//(1)概述:
//类名称:ThreadSendMMS
//类说明:
// 调用WMA接口发送短信
//所在子系统:MIMESMSnotifyPushRegistry
//
//系统总描述:
本工程发送一个MIME头的短信给目标手机。MIME头中指明了对方应该如何处理。
对方手机收到后,触发注册了PushRegistry的MIDlet应用,并解析短信,
按照指明的命令操作。
子系统描述:
发送一个MIME头的短信给目标手机.
//(2)历史记录:
//创建人: 郑昀(2005.11.3)
//联系我: Google Talk >> zhengyun@gmail.com
//Blogs: http://blog.csdn.net/zhengyun_ustc/以及http://www.cnblogs.com/zhengyun_ustc
//(3)版权声明:
//我这个版本的MIMESMSnotifyPushRegistry,
//j2me客户端代码仅仅允许您借鉴,但不得用于商业用途,除非得到郑昀本人的授权。本人保留所有权利。
////////////////////////////////////////////////////////////////////*/
package com.ultrapower.model;
import javax.microedition.io.Connector;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
import com.ultrapower.control.GUIController;
/**********************************************************
//ThreadSendMMS
//
//Class Description:
// 调用WMA接口发送短信
//
//Author:
// zhengyun@ultrapower 2005.11.3
//
**********************************************************/
public class ThreadSendMMS
implements Runnable {
// 控制器
private GUIController m_controller = null;
// 利用这个标志控制何时退出
private boolean m_bRunIt;
private SMSSettings m_Settings = SMSSettings.getInstance();
private String m_sDestMobileNumber = "";
private String m_sMessageText = "";
//////////////////////////////////////////////////////////
// 下面这几个参数是专门为了控制器传递数据进来到后台处理线程准备的
// 所以保证这几个set函数为线程同步的
public synchronized void setDestMobileNumber(String value)
{
m_sDestMobileNumber = value;
}
public synchronized void setMessageText(String value)
{
m_sMessageText = value;
}
public ThreadSendMMS(GUIController controll)
{
System.out.println("/** Enter ThreadSendMMS Constructor!");
m_controller = controll;
m_bRunIt = false;
}
public synchronized void notifySend(boolean value)
{
m_bRunIt = value;
}
public final void run()
{
/* Use networking if necessary */
long lngStart;
long lngTimeTaken;
while(true)
{
try
{
// 我们是依靠 m_bRunIt 来判断是否去得到amr并下载的.
// 如果当前 m_bRunIt 是false,那么本线程就只能先睡眠一段时间了.
if( m_bRunIt )
{
System.out.println("/* Start Send SMS!");
MessageConnection conn = null;
try
{
String addr = "sms://" + m_sDestMobileNumber + ":" +
String.valueOf(m_Settings.getSMSPort());
System.out.println("发送地址为:" + addr);
conn =
(MessageConnection) Connector.open(addr);
TextMessage msg =
(TextMessage) conn.newMessage(
MessageConnection.TEXT_MESSAGE);
msg.setPayloadText( m_sMessageText );
conn.send(msg);
conn.close();
}
catch(Exception exc)
{
exc.printStackTrace();
}
finally
{
conn = null;
m_sMessageText = "";
m_sDestMobileNumber = "";
}
////////////////////////////////////////////
// 告诉控制器,发送短信了
m_controller.handleEvent(GUIController.EventID.EVENT_SENDMMS_SUCC,
null);
////////////////////////////////////////////
m_bRunIt = false;
}
lngStart = System.currentTimeMillis();
lngTimeTaken = System.currentTimeMillis() - lngStart;
if(lngTimeTaken < 100)
Thread.sleep(75 - lngTimeTaken);
}
catch(Exception exc)
{
System.out.println("/** 发送短信时发生异常!");
m_bRunIt = false;
exc.printStackTrace();
////////////////////////////////////////////
// 告诉控制器,不能够发送短信
m_controller.setSendMMSException(exc.getMessage()
+ "/" + exc.getClass());
m_controller.handleEvent(GUIController.EventID.EVENT_SENDMMS_ERROR,
null);
////////////////////////////////////////////
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -