Android之BroadcastReceiver 监听系统广播
生活随笔
收集整理的這篇文章主要介紹了
Android之BroadcastReceiver 监听系统广播
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
綁定廣播有兩種方式
一.配置文件綁定,在程序未啟動(dòng)也能監(jiān)聽
二.代碼方式綁定,在程序啟動(dòng)后才能監(jiān)聽
?
1.綁定和取消綁定廣播
public class MainActivity extends Activity {private Button registerButton=null;private Button unRegisterButton=null;private SMSReceiver smsReceiver=null;private static final String SMS_ACTION="android.provider.Telephony.SMS_RECEIVED";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);registerButton=(Button)findViewById(R.id.registerButton);unRegisterButton=(Button)findViewById(R.id.unRegisterButton);registerButton.setOnClickListener(new RegisterReceiverListener());unRegisterButton.setOnClickListener(new UnRegisterReceiverListener());/*if (savedInstanceState == null) {getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();}*/}class RegisterReceiverListener implements OnClickListener{@Overridepublic void onClick(View v) {System.out.println("registerReceiver");//生成一個(gè)BroadcastReceiver對(duì)象smsReceiver=new SMSReceiver();//生成一個(gè)IntentFilter對(duì)象IntentFilter filter=new IntentFilter();//為IntentFilter添加一個(gè)Action filter.addAction(SMS_ACTION);MainActivity.this.registerReceiver(smsReceiver, filter);}}class UnRegisterReceiverListener implements OnClickListener{@Overridepublic void onClick(View v) {System.out.println("unregisterReceiver");MainActivity.this.unregisterReceiver(smsReceiver);}}?
2.廣播類
package com.example.mars_1800_broadcastreceiver02;import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.gsm.SmsMessage;public class SMSReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("receive message");//接收Intent對(duì)象當(dāng)中的數(shù)據(jù)Bundle bundle=intent.getExtras();//在Bundle對(duì)象中有一個(gè)屬性為pdus,該屬性為Object數(shù)組Object[] myOBJpdus=(Object[])bundle.get("pdus");//創(chuàng)建一個(gè)SmsMessage類型的數(shù)組SmsMessage[] messages=new SmsMessage[myOBJpdus.length];System.out.println(messages.length);for (int i = 0; i < myOBJpdus.length; i++) {//使用Object數(shù)組中的對(duì)象創(chuàng)建SmsMessage對(duì)象messages[i]=SmsMessage.createFromPdu((byte[])myOBJpdus[i]);//獲取到信息對(duì)象的內(nèi)容 System.out.println(messages[i].getDisplayOriginatingAddress());System.out.println(messages[i].getDisplayMessageBody());}} }?
3.加入相應(yīng)權(quán)限
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.mars_1800_broadcastreceiver02"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="19" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.mars_1800_broadcastreceiver02.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- <receiver android:name="SMSReceiver" ><intent-filter><action android:name="android.provider.Telephony.SMS_RECEIVED" /></intent-filter></receiver> --></application><!-- 接收短信廣播則一定有加入相應(yīng)的權(quán)限 --><uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> </manifest>?
總結(jié)
以上是生活随笔為你收集整理的Android之BroadcastReceiver 监听系统广播的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到马踩人是怎么回事
- 下一篇: 国产杀毒软件也开始支持虚拟化