您的位置:首页 > 其它

BroadcastReceiver 接收系统短信广播

2013-07-15 11:26 183 查看
BroadcastReceiver 接收系统短信广播

/* 注册广播:

* |--静态注册 (在AndroidManifest .xml 中注册)

* <receiver android:name=".MyBroadcastRecevier" >

<intent-filter>

<action android:name="com.example.broadcasttest" />

</intent-filter>

</receiver>

* |--动态注册:

* //动态注册广播

BroadcastReceiver receiver = new MyBroadcastRecevier();

//创建IntentFilter 意图过滤器

IntentFilter filter = new IntentFilter();

//注册广播

registerReceiver(receiver, filter);

*/

package com.app.broadcaststest;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
 
import android.telephony.gsm.SmsMessage;
import android.widget.EditText;
import android.widget.Toast;

public class RecevierSMSActivity extends Activity {
	BroadcastReceiver mBroadcastReceiver;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		// 设置布局
		setContentView(R.layout.activity_resms); 
	}

	@Override
	protected void onStart() {
		// 注册广播
		super.onStart();
		mBroadcastReceiver = new ReceiverSms();
		IntentFilter mfFilter = new IntentFilter();
		mfFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
		registerReceiver(mBroadcastReceiver, mfFilter);
	}
	@Override
	protected void onStop() {
		// 	取消广播
		super.onStop();
		unregisterReceiver(mBroadcastReceiver);
	}
	private final class ReceiverSms extends BroadcastReceiver {

		@Override
		public void onReceive(Context context, Intent intent) { 
			// 处理接收短信
			if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
				Toast.makeText(context, "接收到短信", Toast.LENGTH_SHORT).show();
				Bundle bundle = intent.getExtras();
				if(bundle!=null){
					Object[] SmsData = (Object[]) bundle.get("pdus");
					SmsMessage sd[] =   new SmsMessage[SmsData.length];
					for (int i = 0; i < SmsData.length; i++) {
						sd[i] = SmsMessage.createFromPdu((byte[]) SmsData[i]);
						EditText editText3 =	(EditText)findViewById(R.id.editText3);
						EditText editText4 =(EditText) findViewById(R.id.editText4);
						editText4.setText(sd[0].getDisplayOriginatingAddress().toString());//短信号码
						editText3.setText(sd[0].getDisplayMessageBody().toString());//短信内容
					}
				}
			} 
		} 
	} 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: