短信SMS的接收

近日,看了《第一行代码》有关短信接收的内容,就总结了一下。

1.手机接收到一条短信时,系统会发出一条android.provider.Telephy.SMS_RECEIVER的广播,这条广播带有短信的所有数据

2.首先定义xml文件

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:padding="10dp"
            android:text="From:"/>

        <TextView
            android:id="@+id/sender"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"/>
        </LinearLayout>

         <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:padding="10dp"
            android:text="Content:"/>
        <TextView
            android:id="@+id/content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"/>

2.MainActivity

public class MainActivity extends ActionBarActivity {

    private TextView sender;

    private TextView content;

    private IntentFilter receiverFilter;

    private MessageReceiver messageReceiver;

    @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);

    receiverFilter = new IntentFilter();
    receiverFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
    receiverFilter.setPriority(100);
    messageReceiver=new MessageReceiver();
    //第一个参数表示将要执行的方法,第二个表示接受的广播
    registerReceiver(messageReceiver, receiverFilter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //动态注册广播,要在ondestroy()方法中取消注册
        unregisterReceiver(messageReceiver);
    }

    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();
        }

    }

}

3.最后要在AndroidManifest.xml中声明权限
<uses-permission android:name="android.permission.RECEIVE_SMS"/>

4.运行图

ps:这里的接受方式好像是API11之前的方法,现在已经不建议使用了

时间: 2024-11-16 15:35:10

短信SMS的接收的相关文章

短信猫验证码接收解决方案(提供三款接口应用软件)

短信猫验证码方案介绍: 两个短信猫验证的应用场景: 1.网站验证码用户登录 目前在网络上各种网站.应用.平台登录都需要用到手机验证码,直接给用户手机发送验证码后才能进行登录等操作及大地提高了用户的安全性及降低了恶意注册的可能性. 2.网络营销账号注册 我们注册各类网站.APP.软件时均需要与用户手机号绑定才能使用相应的网站和软件功能,有这样一群以出售账号即通过专业的短信猫设备可大批量接收验证码的方式去注册海量账号从而提供给那些网络营销公司或个人,他们可拿来做营销宣传与推广,一个账号的价值不菲.

java 发送短信sms实现接口

import java.io.UnsupportedEncodingException; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; pu

iOS 拨打电话 发短信(sms) 发邮件(mail) 调用自带的浏览器 safari

注意 : 以下需要苹果手机测试(真机测试)           一.拨打电话的两种方式 //拨打电话方式1  (弹出提示是否呼叫,推荐这种) UIWebView*callWebview =[[UIWebView alloc] init]; NSURL *telURL =[NSURL URLWithString:@"tel:10086"]; [callWebview loadRequest:[NSURLRequest requestWithURL:telURL]]; //记得添加到vie

Android之发送短信和接收验证码

最近项目需求需要发送短信和接收验证码并将验证码显示在输入框中 以下是我的记录 前提---权限 <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <

android: 接收和发送短信

8.2    接收和发送短信 收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这 项功能,而 Android 作为出色的智能手机操作系统,自然也少不了在这方面的支持.每个 Android 手机都会内置一个短信应用程序,使用它就可以轻松地完成收发短信的操作,如 图 8.4 所示. 图   8.4 不过作为一名开发者,仅仅满足于此显然是不够的.你要知道,Android 还提供了一系 列的 API,使得我们甚至可以在自己的应用程序里接收和发送短信.也就是说,只要你有足 够的信

android学习十四(android的接收短信)

收发短信是每个手机基本的操作,android手机当然也可以接收短信了.android系统提供了一系列的API,使得我们可以在自己的应用程序里接收和发送短信. 其实接收短信主要是利用我们前面学过的广播机制.当手机接收到一条短信的时候,系统会发出一条值为andorid.provider.Telephony.SMS_RECEIVED的广播,这条广播里携带着与短信相关的所有数据.每个应用程序都可以在广播接收器里对它进行监听,收到广播时在从中解析出短信的内容即可. 下面我们来个具体的例子实践下吧,新建一个

手机安全卫士------手机防盗页面之发送短信&amp;接收短信

功能需求: 接上一篇文章,如果sim卡变更,则发送一条报警短信给安全号码 接收从安全号码发来的短信,如果内容为报警指令,则根据相应的报警指令做出相应的操作 发送短信 1.创建一个SmsManager对象 SmsManager manager = SmsManager.getDefault(); 2.通过SharedPreferences获取安全号码 String number 3.创建短信内容: content 4.分割短信: 由于每条短信只能70个字,所以我们要把它分割一下:manager.d

android基础----&gt;发送和接收短信

收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这项功能,而Android 作为出色的智能手机操作系统,自然也少不了在这方面的支持.今天我们开始自己创建一个简单的发送和接收短信的应用. 目录导航 接收短信 发送短信 友情链接 接收短信 项目的结构如下:一个简单的接收和发送短信的功能 一.定义一个接收短信的广播:当手机接收到一条短信的时候,系统会发出一条值为android.provider.Telephony.SMS_RECEIVED 的广播,这条广播里携带着与短信相关的

(转)Android短信的发送和接收监听

/**发送与接收的广播**/     String SENT_SMS_ACTION = "SENT_SMS_ACTION";     String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";     private BroadcastReceiver sendMessage = new BroadcastReceiver() {         @Override         public void onRece