`
yzhong_sa
  • 浏览: 89936 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

android 让5556和5554发发sms

阅读更多

嗯  今天写了两个activity来玩玩sms。。

 

首先是做一个输入框,输入号码和短信内容。

 

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget40"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
android:id="@+id/tel_num_send"
android:layout_width="wrap_content"
android:layout_height="25px"
android:text="Tel Number:"
android:layout_x="10px"
android:layout_y="22px"
>
</TextView>
<EditText
android:id="@+id/telNumText_send"
android:layout_width="197px"
android:layout_height="35px"
android:text=""
android:textSize="18sp"
android:layout_x="90px"
android:layout_y="12px"
>
</EditText>
<EditText
android:id="@+id/message_copntent_send"
android:layout_width="319px"
android:layout_height="86px"
android:text=""
android:textSize="18sp"
android:layout_x="0px"
android:layout_y="112px"
>
</EditText>
<Button
android:id="@+id/send_button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send"
android:layout_x="120px"
android:layout_y="212px"
>
</Button>
<TextView
android:id="@+id/message_content_text_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Input Message"
android:layout_x="10px"
android:layout_y="82px"
>
</TextView>
</AbsoluteLayout>

 

对应的activity:

 

package com.sun.smsdemo;
/**
 * @author Sun.Zhong
 * @version 1.0
 */
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.sendform);
  
  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("com.sun.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;
 }

}

  SmsManager smsMgr = SmsManager.getDefault();
    Intent i = new Intent("com.sun.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);
    } 
这一段就是发送操作了。。

 

嗯  然后再搞个接受的ui。

 

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget40"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<EditText
android:id="@+id/message_get"
android:layout_width="319px"
android:layout_height="86px"
android:text=""
android:textSize="18sp"
android:layout_x="0px"
android:layout_y="42px"
>
</EditText>
<EditText
android:id="@+id/message_reply"
android:layout_width="319px"
android:layout_height="76px"
android:textSize="18sp"
android:layout_x="0px"
android:layout_y="182px"
>
</EditText>
<TextView
android:id="@+id/widget29"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView1"
android:layout_x="-150px"
android:layout_y="-18px"
>
</TextView>
<Button
android:id="@+id/reply_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reply"
android:layout_x="120px"
android:layout_y="282px"
>
</Button>
<TextView
android:id="@+id/widget42"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reply Message:"
android:layout_x="10px"
android:layout_y="152px"
>
</TextView>
<TextView
android:id="@+id/widget43"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Get Message:"
android:layout_x="10px"
android:layout_y="12px"
>
</TextView>
<ProgressBar
android:id="@+id/bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="130px"
android:layout_y="132px"
>
</ProgressBar>
</AbsoluteLayout>

 

接收短信需用实现BroadcastReceiver ,并覆盖

public void onReceive(Context context, Intent intent) 方法:

 

package com.sun.smsdemo;
/**
 * @author Sun.Zhong
 * @version 1.0
 */
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);
  
 }

}

 

这样当有message来的时候,这个SMSReceiver  就会call它的onReceive()方法

然后把message的内容通过intent传到显示数据的DisplayMessage activity中

 

package com.sun.smsdemo;

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.main);
  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("com.sun.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" />

 

这是初步的功能,后面想添加一个类似聊天记录的功能。。。详细再说。

 

在JE写block不能直接上传图片真TMD不爽。。。。

 

 

是了  忘记说怎么用。。启动两个emulator,同时在这两条鸟一起运行这个应用,然后tel num一个填5556 一个填5554就可以互发短信了。。。。

 

ps:UI做的丑了一点。。。

 

分享到:
评论

相关推荐

    Sms.rar_MMS_android sms_android 短信_sms_sms android

    这个名为"Sms.rar"的压缩包包含了一个关于Android SMS(Short Message Service)功能的源码实现,特别提到了MMS(Multimedia Messaging Service)的支持,这允许发送和接收包含多媒体内容的消息。下面将详细解释这些...

    sms.zip_Android 数据库_android_android sms_sms

    总结,"sms.zip_Android 数据库_android_android sms_sms"涵盖了Android平台下使用SQLite数据库管理和操作短信数据的相关技术,包括数据库操作、广播接收器、内容提供者、权限控制以及数据备份恢复等多个方面。...

    SMS.rar_android_android sms.zip_sms_sms android_sms java

    这个压缩包"SMS.rar"和"android_android sms.zip"包含的可能是一系列与在Android系统上编程短信功能相关的资源和代码示例。让我们深入探讨一下这个话题。 1. **Android SMS API**: Android提供了`SmsManager`类,...

    SMS.zip_android_android sms_sms

    标题中的“SMS.zip_android_android sms_sms”表明这是一个与Android操作系统中的短信功能相关的压缩包,包含的是与接收和处理短信有关的代码或资源。在Android系统中,短信服务(SMS)是移动设备通信的一个核心部分...

    Android-SMS.rar_android_android sms_android tts SMS_android 短信_s

    3. **权限管理**: 发送和接收短信需要在AndroidManifest.xml中声明相应的权限,如`&lt;uses-permission android:name="android.permission.SEND_SMS" /&gt;`和`&lt;uses-permission android:name="android.permission.RECEIVE...

    SMS.rar_android_android sms_sms_sms java

    在Android操作系统中,SMS(Short Message Service)是用于发送和接收短信的核心功能。这个"SMS.rar"文件可能包含了关于如何在Android平台上处理SMS消息、管理联系人以及与SIM卡交互的相关代码示例或教程。接下来,...

    SMS.rar_android_android 收发 短信_android 服务_android 短信_sms

    在Android平台上,短消息服务(SMS)是移动设备通信的核心组成部分之一。这个“SMS.rar”压缩包文件似乎包含了一个自定义开发的Android短信收发系统,适用于特定的办公或业务需求。下面,我们将深入探讨Android SMS...

    Android_SMS.rar_Android_SMS_android_apk_安卓 短信发送_安卓SMS

    【标题】"Android_SMS.rar" 是一个包含有关Android短信功能的源代码压缩包,主要针对的是Android平台上短信的发送和接收。"Android_SMS_android_apk" 暗示了这可能是一个已经打包好的APK应用,可以安装在Android设备...

    Sms.zip_android sms_android 短信_sms_安卓_安卓短信拦截

    而“Sms.zip”这个压缩包文件可能包含了关于Android短信拦截和转发的实现代码或者资源。接下来,我们将深入探讨Android短信服务,特别是如何实现拦截和转发机制。 1. **Android SMS服务**:Android提供了一个名为`...

    SmsListener.zip_SMS spy_android sms_android spy_sms_sms转发

    android短信监听器,可转发收到的短信。支持短信设置接收机号码。仅供技术交流。-android SMS spy,transfer SMS to a receiver。The receiver can be set by commmand SMS

    SMS_Android.rar_android_android sms

    【标题】"SMS_Android.rar" 是一个针对 Android 平台的 SMS(Short Message Service,短信)收发程序。这个项目对于那些希望在自己的 Android 应用中集成短信功能的开发者来说,是一个非常实用的资源。 【描述】该...

    android sms的发送以及接受

    在Android系统中,短信服务(SMS)是移动应用开发中不可或缺的一部分,允许用户发送和接收文本消息。本文将深入探讨如何在Android平台上实现短信的发送与接收功能。 首先,我们需要了解Android SMS服务的基础知识。...

    android开发短信的sms信息

    - **READ_SMS和WRITE_SMS权限**:除了发送短信需要`SEND_SMS`权限,读取和写入短信还需要`READ_SMS`和`WRITE_SMS`权限。同样,这些权限在Android 6.0及以上版本需要动态申请。 - **用户提示**:在请求权限时,需要...

    sms.rar_android sms_pdu_pdu sms_短信_短信 pdu

    关键词“android sms_pdu_pdu sms”揭示了这个压缩包内容与Android系统中处理短信(SMS)相关的PDU(Protocol Data Unit)编码和解码有关。PDU是GSM通信协议中的一种数据格式,它在短信传递过程中扮演着关键角色。 ...

    Android send SMS and save SMS

    在Android平台上,发送短信和保存短信记录是两个重要的功能,它们涉及到系统级别的权限以及与SMS相关的API交互。本文将深入探讨这两个主题,并提供相应的代码示例。 ### 1. Android发送短信 在Android中,发送短信...

    linphone-android-sms_defaultable_APP_linphone_android_sms_

    由于是开源项目,"linphone-android-sms_defaultable"可能包含对开发者友好的API和文档,允许第三方开发者根据自己的需求进一步定制短信功能,比如集成企业通讯录、自定义通知设置等。 总的来说,"linphone-...

    android sms send

    "android sms send"这一主题涵盖了如何在Android环境中发送短信,这通常涉及到编程接口(API)的使用,调试技巧以及不同设备间的兼容性问题。下面将详细介绍这个知识点。 首先,Android系统提供了一个名为`...

    SMS_For_Android

    在"SMS_For_Android"项目中,开发者可以方便地接入Mob的服务,只需在代码中配置相应的API密钥和回调接口。具体步骤包括: 1. 注册Mob开发者账号,获取API密钥。 2. 在Android应用中引入Mob SDK,通常通过Gradle或...

    SMS.rar_android_android sms

    总结起来,"SMS.rar"提供的源码展示了如何在Android应用中实现短信发送功能,包括使用`SmsManager`、处理权限和监听短信状态。理解并掌握这些知识点,开发者可以构建一个功能完善的短信应用,满足用户的基本需求。

Global site tag (gtag.js) - Google Analytics