[Android]通过广播读取短信

来源:互联网 发布:nginx 1.8.0 漏洞 编辑:程序博客网 时间:2024/05/22 04:59

此实例实现功能为通过接收广播读取短信

实现很简单,但使用到了广播接受者,以免遗忘在此记录:

代码

  • AndriodMainfest文件

申明权限

    <uses-permission android:name="android.permission.RECEIVE_SMS" >    </uses-permission>

配置广播

        <receiver android:name="activity.SMSBroadcastReceiver">            <intent-filter android:priority="999">                 <action android:name="android.provider.Telephony.SMS_RECEIVED" />             </intent-filter>        </receiver>
  • BroadcastReceiver文件
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.telephony.SmsMessage;public class SMSBroadcastReceiver extends BroadcastReceiver{    //指定动作的名称    public static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";      @Override      public void onReceive(Context context, Intent intent) {          if (ACTION.equals(intent.getAction())) {            //根据接收到的意图对象获取短信            SmsMessage[] msgs = getMessageFromIntent(intent);            //提取短信内容              StringBuilder sBuilder = new StringBuilder();              if (msgs != null && msgs.length > 0 ) {                  for (SmsMessage msg : msgs) {                      sBuilder.append("接收到了短信:\n发件人是:");                      sBuilder.append(msg.getDisplayOriginatingAddress());                      sBuilder.append("\n------短信内容-------\n");                    sBuilder.append(msg.getDisplayMessageBody());                 }              }            System.out.println(sBuilder.toString());          }           }      //从意图获取短信对象的具体方法    public static SmsMessage[] getMessageFromIntent(Intent intent) {          SmsMessage retmeMessage[] = null;          Bundle bundle = intent.getExtras();          Object pdus[] = (Object[]) bundle.get("pdus");          retmeMessage = new SmsMessage[pdus.length];          for (int i = 0; i < pdus.length; i++) {              byte[] bytedata = (byte[]) pdus[i];              retmeMessage[i]  = SmsMessage.createFromPdu(bytedata);          }          return retmeMessage;      }}
0 0