`

模拟器互发短信

阅读更多

以下内容Sinfrancis版权所有,专注请注明来自  http://mdev.cc/dev

 

目的:使用模拟器互发短信息,比如 5554 和 5556互发短息


关键代码:

发送短信代码:
package cc.androidos.sms;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

/**
 * 
 * @param demo
 *            :its own object.
 * @param telNum
 *            : telephone number to send to .
 * @param messageText
 *            : the message need to send .
 * @param sendBtn
 *            :Button.
 * 
 */
public class SMSDemo extends Activity {
private static SMSDemo demo;
private EditText telNum;
private EditText messageText;
private Button sendBtn;

/**
* override the method onCreate() 1.bind the data telNum and messageText.
* 2.set the sendBtn's listener.
*/
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.send);

demo = this;
telNum = (EditText) findViewById(R.id.telNumText_send);
messageText = (EditText) findViewById(R.id.message_copntent_send);
sendBtn = (Button) findViewById(R.id.send_button_send);

/**
* 1.get the data from the input line.. 2.call the SmsManager and send
* the message.
*/
sendBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String telNumStr = telNum.getText().toString();
String messageStr = messageText.getText().toString();
if (null != telNumStr && null != messageStr) {
SmsManager smsMgr = SmsManager.getDefault();
Intent i = new Intent("cc.androidos.smsdemo.IGNORE_ME");
PendingIntent dummyEvent = PendingIntent.getBroadcast(
SMSDemo.this, 0, i, 0);
try {
smsMgr.sendTextMessage(telNumStr, null, messageStr,
dummyEvent, dummyEvent);
} catch (Exception e) {
Log.e("SmsSending", "SendException", e);
}
} else {
showDialog(getTaskId());
}
}
});
}

/**
* get its object.
* 
* @return SMSDemo
*/
public static SMSDemo getApp() {
return demo;
}
}

 接受短信的Receiver:

package cc.androidos.sms;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;
import android.util.Log;

public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SMSDemo demo = SMSDemo.getApp();
Bundle bundle = intent.getExtras();
StringBuffer sb = new StringBuffer(5000);
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++) {
smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
String address = smsMessage[n].getOriginatingAddress();
sb.append(address + ":").append(smsMessage[n].getMessageBody());
}
Log.e("message", sb.toString());
/**
* call an intent to start the activity DisplayMessage with variable
* message data.
*/
Intent i = new Intent(context, DisplayMessage.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("message", sb.toString());
context.startActivity(i);

}
}
 显示短信的Activity:

package cc.androidos.sms;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.gsm.SmsManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;

public class DisplayMessage extends Activity {
private EditText messageText;
private EditText messageReplyText;
private Intent intent;
private String telNum;
private String message;
private Button replyBtn;
private ProgressBar bar;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.receiver);
messageText = (EditText) findViewById(R.id.message_get);
messageReplyText = (EditText) findViewById(R.id.message_reply);
replyBtn = (Button) findViewById(R.id.reply_button);
bar = (ProgressBar) findViewById(R.id.bar);
bar.setVisibility(ProgressBar.INVISIBLE);
intent = getIntent();
String data = intent.getStringExtra("message");
String[] str = data.split(":");
if (str.length == 2) {
telNum = str[0];
message = str[1];
}
messageText.append(data);
messageText.append("\n");
// messageText.append("\n");
replyBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
bar.setVisibility(ProgressBar.VISIBLE);
String replyMessage = messageReplyText.getText().toString();
SmsManager smsMgr = SmsManager.getDefault();
Intent i = new Intent("cc.androidos.smsdemo.IGNORE_ME");
PendingIntent dummyEvent = PendingIntent.getBroadcast(
DisplayMessage.this, 0, i, 0);
try {
smsMgr.sendTextMessage(telNum, null, replyMessage,
dummyEvent, dummyEvent);
messageText.append(replyMessage);
messageText.append("\n");
messageReplyText.setText("");

} catch (Exception e) {
Log.e("SmsSending", "SendException", e);
}
bar.setVisibility(ProgressBar.INVISIBLE);
}
});
}

/**
* get the name by his tel number.
* 
* @param telNum
* @return
*/
private String getNameByIdTelnum(String telNum) {
Cursor mCursor = this.getContentResolver().query(Uri.parse("telNum"),
null, null, null, null);
String result = mCursor.getColumnName(1);
Log.e("test name", result);
return "";
// mCursor.getColumnIndex("Sun");
}
}

 
最后别忘记加入权限:


<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
 
测试的时候开两个模拟器,号码填入对方模拟器号即可
分享到:
评论
4 楼 huangbq 2010-09-06  
请问发送中文短信的话,接收模拟器会出现乱码,该怎么解决?
3 楼 morosefrog 2010-04-30  
谢谢分享,学习了~
2 楼 supertaxi 2010-01-06  
请问怎么样开两个模拟器啊~~
1 楼 yzhong_sa 2009-12-30  
请问 有没有彩信的?

相关推荐

    二个android模拟器互发短信程序演示

    "Android 模拟器互发短信程序演示" Android 模拟器互发短信程序演示是一种基于 Android 平台的短信发送程序,该程序可以在两个 Android 模拟器之间互发短信。下面是该程序的详细介绍: 一、创建 Android 工程 在...

    android短信会话测试.doc

    例如,以下代码片段展示了如何初始化数据(通过模拟器互发短信)并进行测试: ```java public class SMSTest extends AndroidTestCase { private static final String TAG = "SMSTest"; // 省略初始化数据的步骤...

    sgip1模拟器测试

    5. **兼容性测试**:与不同厂商的短信网关或SMSC(短消息服务中心)进行互操作性测试,确保跨平台的兼容性。 6. **日志分析**:分析测试产生的日志文件,找出潜在问题和改进点。 7. **性能优化**:根据测试结果...

    华为SOAP模拟器_彩信

    - SOAP是基于XML的,这意味着所有的消息都以XML格式编码,使得数据具有跨平台和跨语言的互操作性。 - SOAP协议通常与WSDL(Web Services Description Language)结合使用,WSDL描述了服务的位置、消息格式以及如何...

    互芯平台GSM软件简明教程

    7. **模拟与测试**:在实际硬件上测试前,可以使用互芯平台的模拟器进行预测试。这有助于在不涉及物理设备的情况下检查代码逻辑是否正确。 8. **连接硬件**:当代码在模拟器上运行良好后,将你的应用程序部署到GSM...

    java源码:Java手机与计算机互发彩信源码.rar

    【Java手机与计算机互发彩信源码】是Java编程领域的一个经典案例,涉及到移动通信技术、Java ME(Java Micro Edition)以及Java SE(Java Standard Edition)的应用。在这个项目中,我们将深入理解如何利用Java技术...

    飞信JAR的(精品)好几个,供打包下载3个

    1. **免费短信**:飞信用户之间可以免费互发短信,无论对方是否在线,都可以实现即时通信,节省了短信费用。 2. **多平台支持**:不仅支持手机,还可以在电脑上通过客户端或者网页版使用,实现了跨平台的无缝沟通。 ...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--模拟发短信 指定号码 短信窃听提示 |--消息机制 mesage looper |--滑动之左右滑动的两种定义 |--电话簿读取联系人信息 |--监听 |--监听之CheckBox是否选中监听 |--监听之EditText内容变化监听 |--监听之GridView...

    SGIP服务端

    SGIP(Short Message Gateway Interworking Protocol)协议是中国联通的一种短消息网关互操作协议,用于在不同的短信中心之间传输和处理短消息。这个协议包括了发送、接收、查询、删除等多种短消息业务功能,是构建...

    基于Android的机票预订系统的设计与实现

    随着手机移动技术的迅速发展,手机已经从过去的单一通话和收发短信功能发展到现在可进行移动搜索、全球定位导航、手机电视、实时的视频通信、网上支付和对使用者的健康进行监测等其它强大功能。 该系统采用...

    豆荚installer

    1. **安卓模拟器**: 豌豆荚不仅是一个应用市场,它还支持通过内置的安卓模拟器在电脑上运行安卓应用。用户无需拥有安卓设备,就能在电脑上体验各种手机应用。 2. **应用下载与更新**: 豌豆荚提供了一个方便的界面,...

    NIIT J2ME 绝对真实题库

    11. **Sun Java Wireless Toolkit工具:** Sun Java Wireless Toolkit包含用于开发J2ME应用程序的两个主要工具,它们是(a)Mobile Phone模拟器和Java Card模拟器。这些工具帮助开发者在实际设备可用之前测试和调试...

    how_to_create_mms_services

    与传统的短信服务(SMS)相比,彩信提供了更丰富的媒体体验。例如,一个女性用户可以通过订阅新闻服务每天早晨接收到带有图片的头条新闻;一个小男孩可以在他喜欢的乐队发布新专辑时收到包含音乐片段的彩信;旅行...

    Android SDK 中文开发文档

    Android系统不仅仅是一个操作系统,它还包含了一系列中间件和一些关键的应用程序,如邮件客户端、短信程序、日历、地图、浏览器、联系人管理程序等,这些应用程序都是使用Java语言编写的。 Android的应用程序框架...

     一.JAVA程序传送到手机的方法:

     通过手机上网下载以及使用短信定购的方式,直接在手机的个人文档或者应用程序中找 到(根据手机各不相同),无需在安装,直接可以在类似"我的文件夹"之类的选项找到。  使用电脑下载就需要将文件传送到手机上。 ...

    Android:我对Android的了解

    Kotlin具有简洁的语法、类型安全、空安全和互操作性等优点,极大地提高了开发效率和代码质量。相比Java,Kotlin减少了代码量,降低了出错的可能性,并支持函数式编程概念。 Android应用程序主要由以下几个组件构成...

    微系统毕业论文

    - **兼容性强**:蓝牙标准被广泛接受,支持多种设备间的互操作性。 ##### 1.3 蓝牙技术的应用 - **个人区域网(PAN)**:用于连接个人电脑、手机等设备,形成小型网络。 - **耳机/扬声器**:蓝牙耳机和扬声器已成为...

Global site tag (gtag.js) - Google Analytics