Android:BroadcastReceiver的基础知识
生活随笔
收集整理的這篇文章主要介紹了
Android:BroadcastReceiver的基础知识
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
注冊廣播有幾種方式,這些方式有何優(yōu)缺點(diǎn)?請談?wù)?Android 引入廣播機(jī)制的用意。 在 android 下,要想接受廣播信息,那么這個(gè)廣播接收器就得我們自己來實(shí)現(xiàn)了,我們可以繼承 BroadcastReceiver,就可以有一個(gè)廣播接受器了。有個(gè)接受器還不夠,我們還得重寫 BroadcastReceiver 里面的 onReceiver 方法,當(dāng)來廣播的時(shí)候我們要干什么,這就要我們自己來實(shí)現(xiàn),不過我們可以搞一個(gè)信息防火墻。具體的代碼:public class SmsBroadCastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); Object[] object = (Object[])bundle.get("pdus"); SmsMessage sms[]=new SmsMessage[object.length]; for(int i=0;i<object.length;i++) { sms[0] = SmsMessage.createFromPdu((byte[])object[i]); Toast.makeText(context, "來自"+sms[i].getDisplayOriginatingAddress()+" 的消息是:"+sms[i].getDisplayMessageBody(), Toast.LENGTH_SHORT).show(); } //終止廣播,在這里我們可以稍微處理,根據(jù)用戶輸入的號碼可以實(shí)現(xiàn)短信防火墻。 abortBroadcast(); } } 當(dāng)實(shí)現(xiàn)了廣播接收器,還要設(shè)置廣播接收器接收廣播信息的類型,這里是信息:android.provider.Telephony.SMS_RECEIVED 我們就可以把廣播接收器注冊到系統(tǒng)里面,可以讓系統(tǒng)知道我們有個(gè)廣播接收器。這里有兩種,一種是代碼動(dòng)態(tài)注冊://生成廣播處理 smsBroadCastReceiver = new SmsBroadCastReceiver(); //實(shí)例化過濾器并設(shè)置要過濾的廣播 IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); //注冊廣播 BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter); 一種是在AndroidManifest.xml中配置廣播:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="spl.broadCastReceiver" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".BroadCastReceiverActivity" 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=".SmsBroadCastReceiver"> <intent-filter android:priority="20"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> </application> <uses-sdk android:minSdkVersion="7" /> <!-- 權(quán)限申請 --> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> </manifest> 兩種注冊類型的區(qū)別是:1)第一種不是常駐型廣播,也就是說廣播跟隨程序的生命周期。2)第二種是常駐型,也就是說當(dāng)應(yīng)用程序關(guān)閉后,如果有信息廣播來,程序也會(huì)被系統(tǒng)調(diào)用自動(dòng)運(yùn)行。
來自為知筆記(Wiz)
來自為知筆記(Wiz)
轉(zhuǎn)載于:https://www.cnblogs.com/zhuzhenfeng/p/4745226.html
總結(jié)
以上是生活随笔為你收集整理的Android:BroadcastReceiver的基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一千行MySQL学习笔记(十二)
- 下一篇: 怎么才能淡化雀斑