每天进步一点----- 收发短信

package com.example.smstest;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    private TextView sender;

    private TextView content;

    private EditText to;

    private EditText msgInput;

    private Button send;

    private IntentFilter receiveFilter;

    private MessageReceiver messageReceiver;

    private IntentFilter sendFilter;

    private SendStatusReceiver sendStatusReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sender = (TextView) findViewById(R.id.sender);
        content = (TextView) findViewById(R.id.content);
        to = (EditText) findViewById(R.id.to);
        msgInput = (EditText) findViewById(R.id.msg_input);
        send = (Button) findViewById(R.id.send);
        receiveFilter = new IntentFilter();
        receiveFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
        receiveFilter.setPriority(100);
        messageReceiver = new MessageReceiver();
        registerReceiver(messageReceiver, receiveFilter);
        sendFilter = new IntentFilter();
        sendFilter.addAction("SENT_SMS_ACTION");
        sendStatusReceiver = new SendStatusReceiver();
        registerReceiver(sendStatusReceiver, sendFilter);
        send.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                SmsManager smsManager = SmsManager.getDefault();
                Intent sentIntent = new Intent("SENT_SMS_ACTION");
                PendingIntent pi = PendingIntent.getBroadcast(
                        MainActivity.this, 0, sentIntent, 0);
                smsManager.sendTextMessage(to.getText().toString(), null,
                        msgInput.getText().toString(), pi, null);
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(messageReceiver);
        unregisterReceiver(sendStatusReceiver);
    }

    class MessageReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            Bundle bundle = intent.getExtras();
            Object[] pdus = (Object[]) bundle.get("pdus");
            SmsMessage[] messages = new SmsMessage[pdus.length];
            for (int i = 0; i < messages.length; i++) {
                messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            }
            String address = messages[0].getOriginatingAddress();
            String fullMessage = "";
            for (SmsMessage message : messages) {
                fullMessage += message.getMessageBody();
            }
            sender.setText(address);
            content.setText(fullMessage);
            abortBroadcast();
        }

    }

    class SendStatusReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            if (getResultCode() == RESULT_OK) {
                Toast.makeText(context, "Send succeeded", Toast.LENGTH_LONG)
                        .show();
            } else {
                Toast.makeText(context, "Send failed", Toast.LENGTH_LONG)
                        .show();
            }
        }

    }

}
时间: 2024-12-13 12:32:25

每天进步一点----- 收发短信的相关文章

Android开发手记(15) 拨打电话和收发短信

1.Intent简介 Android组价之间的通信,由Intent来协助完成.Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用. Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcasts.分别通过startActivity();startService();startBroadcasts();来执行操作. 在

使用 AT 命令实现西门子短信猫收发短信实例

通过AT指令对西门子短信猫收发短信的控制共有三种实现途径: (1) 最初的 Block 模式(2) 基于 AT 命令的 Text 模式 (3) 基于 AT 命令的 PDU 模式 本文记录的大量的TC35/TC35T 实验数据,总结了使用TC35/TC35T 短信猫收发短信的方法. 准备工作: 使用 TC35 收发短信息,用户必须准备一张已开通短信息服务 SIM 卡,并将其插入 MC2002 之 TC35 扩展模块 SIM 卡座中或 TC35T 的 SIM 卡座中. 使用 PC 配合 TC35T

Android收发短信

效果:点击发送短信开始发送短信 收到短信时将短信的内容显示出来 代码如下: 一.权限声明 <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" /> 二.代码实现 我们的短信功能用到了SmsManager和SmsMessage两个主要类. 当收不到

Android下调用收发短信邮件等

1,调web浏览器Uri myBlogUri = Uri.parse("http://xxxxx.com");returnIt = new Intent(Intent.ACTION_VIEW, myBlogUri);2,地图Uri mapUri = Uri.parse("geo:38.899533,-77.036476");returnIt = new Intent(Intent.ACTION_VIEW, mapUri);3,调拨打电话界面Uri telUri =

ARM+llinux系统移植3G拨号上网收发短信(二)【转】

本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099749 一.发送text格式的短信 给联通发text格式的短信: ~ >: microcom -s 115200 /dev/ttyUSB1 at OK 设置短信格式为Text模式: at+cmgf=1 OK at+cmgs="+861300711**** " 输入发送的内容: > hello         (内容写完后按一下ctrl + z发送)  

ARM+llinux系统移植3G拨号上网收发短信(一)【转】

本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099737 一.      PPP移植 各项工作具体说明 向Linux内核添加3G模块的驱动(USB转串口驱动)和PPP协议的支持,然后编译内核并下载到开发板.当然如果之前已经移植好内核,那么只需要增加几个选项就可以,然后在编译内核就可以了,这个文档默认内核已经移植过,所以只讲与USB转串口驱动和PPP协议支持的几个选项. [[email protected] linux-3.

ARM+linux系统移植3G拨号上网收发短信(三)【转】

本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099755 一.用text查看模式下面的“发”是指我敲的命令,“收”是指回车后显示的信息包括其他接收的信息.~ >: microcom -s 115200 /dev/ttyUSB1发:at收:OK 设置成文本模式读:发:at+cmgf=1 收:OK 将信息保存在SIM卡中: 发:at+cpms="SM","SM","SM"

在Windows环境下使用短信猫收发短信的简单配置:

Windows简单配置: 1.插入usb接口,打开电脑的设备管理器,装驱动后,查看端口下设备的com(串口)是多少,接下来就是配置短信猫的必须参数: 如果短信猫是COM(串口)口的,一般端口是COM1,做之前一定要确认端口,确认端口!如上图,端口为COM6,如果不能确定请用光盘测试工具. 2.把需要的包放到项目里 <JAVA_HOME>/jre/bin/下放这两个文件 <JAVA_HOME>/jre/lib/ext下放这这个jar包 需要在项目里加jar包 (我刚开始也使用的是sm

基于j2ee的信箱与短信系统设计与实现

摘    要 当前,信箱与短信系统己经成为对外信息公开.受理公众投诉.咨询和政民互动的主要渠道之一.传统的信箱与短信系统受理时间长.效率低.渠道单一,同时受人为影响较大,督促较为困难. 随着科学技术的发展,计算机网络技术在行业应用的普及,应用现代信息技术在市长信箱与短信系统展现出了越来越多的优势.木文基于贵州某市的实际需求,完成了市长信箱与短信系统的分析和设计. 本文完成了一个基于B/S架构.以J2EE技术和SQLServer后台数据库为基础的.具备多渠道受理.后台统一管理.标准化.流程化.大量