Android:BroadcastReceiver的基础知识
生活随笔
收集整理的這篇文章主要介紹了
Android:BroadcastReceiver的基础知识
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
注冊廣播有幾種方式,這些方式有何優缺點?請談談 Android 引入廣播機制的用意。 在 android 下,要想接受廣播信息,那么這個廣播接收器就得我們自己來實現了,我們可以繼承 BroadcastReceiver,就可以有一個廣播接受器了。有個接受器還不夠,我們還得重寫 BroadcastReceiver 里面的 onReceiver 方法,當來廣播的時候我們要干什么,這就要我們自己來實現,不過我們可以搞一個信息防火墻。具體的代碼: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(); } //終止廣播,在這里我們可以稍微處理,根據用戶輸入的號碼可以實現短信防火墻。 abortBroadcast(); } } 當實現了廣播接收器,還要設置廣播接收器接收廣播信息的類型,這里是信息:android.provider.Telephony.SMS_RECEIVED 我們就可以把廣播接收器注冊到系統里面,可以讓系統知道我們有個廣播接收器。這里有兩種,一種是代碼動態注冊://生成廣播處理 smsBroadCastReceiver = new SmsBroadCastReceiver(); //實例化過濾器并設置要過濾的廣播 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" /> <!-- 權限申請 --> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> </manifest> 兩種注冊類型的區別是:1)第一種不是常駐型廣播,也就是說廣播跟隨程序的生命周期。2)第二種是常駐型,也就是說當應用程序關閉后,如果有信息廣播來,程序也會被系統調用自動運行。
來自為知筆記(Wiz)
來自為知筆記(Wiz)
轉載于:https://www.cnblogs.com/zhuzhenfeng/p/4745226.html
總結
以上是生活随笔為你收集整理的Android:BroadcastReceiver的基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一千行MySQL学习笔记(十二)
- 下一篇: 怎么才能淡化雀斑