模拟器互发短信

 

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


关键代码:

发送短信代码:
Java代码 复制代码  收藏代码
  1. package cc.androidos.sms;   
  2.   
  3. import android.app.Activity;   
  4. import android.app.PendingIntent;   
  5. import android.content.Intent;   
  6. import android.os.Bundle;   
  7. import android.telephony.gsm.SmsManager;   
  8. import android.util.Log;   
  9. import android.view.View;   
  10. import android.view.View.OnClickListener;   
  11. import android.widget.Button;   
  12. import android.widget.EditText;   
  13.   
  14. /**  
  15.  *   
  16.  * @param demo  
  17.  *            :its own object.  
  18.  * @param telNum  
  19.  *            : telephone number to send to .  
  20.  * @param messageText  
  21.  *            : the message need to send .  
  22.  * @param sendBtn  
  23.  *            :Button.  
  24.  *   
  25.  */  
  26. public class SMSDemo extends Activity {   
  27. private static SMSDemo demo;   
  28. private EditText telNum;   
  29. private EditText messageText;   
  30. private Button sendBtn;   
  31.   
  32. /**  
  33. * override the method onCreate() 1.bind the data telNum and messageText.  
  34. * 2.set the sendBtn's listener.  
  35. */  
  36. public void onCreate(Bundle savedInstanceState) {   
  37. super.onCreate(savedInstanceState);   
  38. setContentView(R.layout.send);   
  39.   
  40. demo = this;   
  41. telNum = (EditText) findViewById(R.id.telNumText_send);   
  42. messageText = (EditText) findViewById(R.id.message_copntent_send);   
  43. sendBtn = (Button) findViewById(R.id.send_button_send);   
  44.   
  45. /**  
  46. * 1.get the data from the input line.. 2.call the SmsManager and send  
  47. * the message.  
  48. */  
  49. sendBtn.setOnClickListener(new OnClickListener() {   
  50. public void onClick(View v) {   
  51. String telNumStr = telNum.getText().toString();   
  52. String messageStr = messageText.getText().toString();   
  53. if (null != telNumStr && null != messageStr) {   
  54. SmsManager smsMgr = SmsManager.getDefault();   
  55. Intent i = new Intent("cc.androidos.smsdemo.IGNORE_ME");   
  56. PendingIntent dummyEvent = PendingIntent.getBroadcast(   
  57. SMSDemo.this0, i, 0);   
  58. try {   
  59. smsMgr.sendTextMessage(telNumStr, null, messageStr,   
  60. dummyEvent, dummyEvent);   
  61. catch (Exception e) {   
  62. Log.e("SmsSending""SendException", e);   
  63. }   
  64. else {   
  65. showDialog(getTaskId());   
  66. }   
  67. }   
  68. });   
  69. }   
  70.   
  71. /**  
  72. * get its object.  
  73.  
  74. * @return SMSDemo  
  75. */  
  76. public static SMSDemo getApp() {   
  77. return demo;   
  78. }   
  79. }  
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:

Java代码 复制代码  收藏代码
  1. package cc.androidos.sms;   
  2.   
  3. import android.content.BroadcastReceiver;   
  4. import android.content.Context;   
  5. import android.content.Intent;   
  6. import android.os.Bundle;   
  7. import android.telephony.gsm.SmsMessage;   
  8. import android.util.Log;   
  9.   
  10. public class SMSReceiver extends BroadcastReceiver {   
  11. @Override  
  12. public void onReceive(Context context, Intent intent) {   
  13. SMSDemo demo = SMSDemo.getApp();   
  14. Bundle bundle = intent.getExtras();   
  15. StringBuffer sb = new StringBuffer(5000);   
  16. Object messages[] = (Object[]) bundle.get("pdus");   
  17. SmsMessage smsMessage[] = new SmsMessage[messages.length];   
  18. for (int n = 0; n < messages.length; n++) {   
  19. smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);   
  20. String address = smsMessage[n].getOriginatingAddress();   
  21. sb.append(address + ":").append(smsMessage[n].getMessageBody());   
  22. }   
  23. Log.e("message", sb.toString());   
  24. /**  
  25. * call an intent to start the activity DisplayMessage with variable  
  26. * message data.  
  27. */  
  28. Intent i = new Intent(context, DisplayMessage.class);   
  29. i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
  30. i.putExtra("message", sb.toString());   
  31. context.startActivity(i);   
  32.   
  33. }   
  34. }  
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:

Java代码 复制代码  收藏代码
  1. package cc.androidos.sms;   
  2.   
  3. import android.app.Activity;   
  4. import android.app.PendingIntent;   
  5. import android.content.Intent;   
  6. import android.database.Cursor;   
  7. import android.net.Uri;   
  8. import android.os.Bundle;   
  9. import android.telephony.gsm.SmsManager;   
  10. import android.util.Log;   
  11. import android.view.View;   
  12. import android.view.View.OnClickListener;   
  13. import android.widget.Button;   
  14. import android.widget.EditText;   
  15. import android.widget.ProgressBar;   
  16.   
  17. public class DisplayMessage extends Activity {   
  18. private EditText messageText;   
  19. private EditText messageReplyText;   
  20. private Intent intent;   
  21. private String telNum;   
  22. private String message;   
  23. private Button replyBtn;   
  24. private ProgressBar bar;   
  25.   
  26. public void onCreate(Bundle savedInstanceState) {   
  27. super.onCreate(savedInstanceState);   
  28. setContentView(R.layout.receiver);   
  29. messageText = (EditText) findViewById(R.id.message_get);   
  30. messageReplyText = (EditText) findViewById(R.id.message_reply);   
  31. replyBtn = (Button) findViewById(R.id.reply_button);   
  32. bar = (ProgressBar) findViewById(R.id.bar);   
  33. bar.setVisibility(ProgressBar.INVISIBLE);   
  34. intent = getIntent();   
  35. String data = intent.getStringExtra("message");   
  36. String[] str = data.split(":");   
  37. if (str.length == 2) {   
  38. telNum = str[0];   
  39. message = str[1];   
  40. }   
  41. messageText.append(data);   
  42. messageText.append("\n");   
  43. // messageText.append("\n");   
  44. replyBtn.setOnClickListener(new OnClickListener() {   
  45. public void onClick(View v) {   
  46. bar.setVisibility(ProgressBar.VISIBLE);   
  47. String replyMessage = messageReplyText.getText().toString();   
  48. SmsManager smsMgr = SmsManager.getDefault();   
  49. Intent i = new Intent("cc.androidos.smsdemo.IGNORE_ME");   
  50. PendingIntent dummyEvent = PendingIntent.getBroadcast(   
  51. DisplayMessage.this0, i, 0);   
  52. try {   
  53. smsMgr.sendTextMessage(telNum, null, replyMessage,   
  54. dummyEvent, dummyEvent);   
  55. messageText.append(replyMessage);   
  56. messageText.append("\n");   
  57. messageReplyText.setText("");   
  58.   
  59. catch (Exception e) {   
  60. Log.e("SmsSending""SendException", e);   
  61. }   
  62. bar.setVisibility(ProgressBar.INVISIBLE);   
  63. }   
  64. });   
  65. }   
  66.   
  67. /**  
  68. * get the name by his tel number.  
  69.  
  70. * @param telNum  
  71. * @return  
  72. */  
  73. private String getNameByIdTelnum(String telNum) {   
  74. Cursor mCursor = this.getContentResolver().query(Uri.parse("telNum"),   
  75. nullnullnullnull);   
  76. String result = mCursor.getColumnName(1);   
  77. Log.e("test name", result);   
  78. return "";   
  79. // mCursor.getColumnIndex("Sun");   
  80. }   
  81. }  
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");
}
}

 
最后别忘记加入权限:


Xml代码 复制代码  收藏代码
  1. <uses-permission android:name="android.permission.RECEIVE_SMS" />  
  2. <uses-permission android:name="android.permission.SEND_SMS" />  
 
测试的时候开两个模拟器,号码填入对方模拟器号即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值