美文网首页android赏味不足Android知识
Android开发获取短信的内容并截取短信

Android开发获取短信的内容并截取短信

作者: GuaKin_Huang | 来源:发表于2016-03-27 13:08 被阅读4598次

    Android


    1. 首先我们要写一个广播接收器,当我们的手机收到短信时,系统会自动发送一个广播,我们只需要接收到这条广播就可以了
    2. 在广播里面,我们重写的onReceive()方法,通过里面的Intent写到的Bundle就可以拿到短信的内容
    3. 清单文件里面我们必须要添加权限,否则无法接收到。
    4. 为了防止我们的广播接收不到,我们自己写的广播接收器的权限必须要大,以防万一,我设置了1000。

    步骤详解:

    1. 定义一个广播接收器SmsReceiver,并继承BroadcastReceiver,同时重写onReceive()方法:
    package com.nlte.phonesafe.receiver;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.telephony.SmsMessage;
    
    import com.nlte.phonesafe.R;
    
    public class SmsReceiver extends BroadcastReceiver {
        private static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            //判断广播消息
            if (action.equals(SMS_RECEIVED_ACTION)){
                Bundle bundle = intent.getExtras();
                //如果不为空
                if (bundle!=null){
                    //将pdus里面的内容转化成Object[]数组
                    Object pdusData[] = (Object[]) bundle.get("pdus");// pdus :protocol data unit  :
                    //解析短信
                    SmsMessage[] msg = new SmsMessage[pdusData.length];
                    for (int i = 0;i < msg.length;i++){
                        byte pdus[] = (byte[]) pdusData[i];
                        msg[i] = SmsMessage.createFromPdu(pdus);
                    }
                    StringBuffer content = new StringBuffer();//获取短信内容
                    StringBuffer phoneNumber = new StringBuffer();//获取地址
                    //分析短信具体参数
                    for (SmsMessage temp : msg){
                        content.append(temp.getMessageBody());
                        phoneNumber.append(temp.getOriginatingAddress());
                    }
                    System.out.println("发送者号码:"+phoneNumber.toString()+"  短信内容:"+content.toString());
                    //可用于发命令执行相应的操作
                   /* if ("#*location*#".equals(content.toString().trim())){
                        abortBroadcast();//截断短信广播
                    }else if ("#*alarm*#".equals(content.toString().trim())){
                        MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.guoge);
                        //播放音乐
                        mediaPlayer.start();
                        abortBroadcast();//截断短信广播
                    }else if ("#*wipe*#".equals(content.toString().trim())){
                        abortBroadcast();//截断短信广播
                    }else if ("#*lockscreen*#".equals(content.toString().trim())){
                        abortBroadcast();//截断短信广播
                    }*/
                }
            }
        }
    }
    
    
    1. AndroidManifest.xml注册广播接收器,并添加相应的权限:

    2.1 注册广播接收器

    <receiver android:name=".receiver.SmsReceiver">
        <intent-filter android:priority="1000"> <!--优先级:-1000~1000,系统短信优先级为-1-->
            <!--订阅广播事件类型-->
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        </intent-filter>
    </receiver>
    

    2.2 添加权限

    <!--收短信的权限-->
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <!--读取短信信息的权限-->
    <uses-permission android:name="android.permission.READ_SMS"/>
    

    相关文章

      网友评论

        本文标题:Android开发获取短信的内容并截取短信

        本文链接:https://www.haomeiwen.com/subject/tntjlttx.html