Android 广播机制---BroadCast
在android下,要想接受廣播信息,那么這個(gè)廣播接收器就得我們自己來(lái)實(shí)現(xiàn)了,我們可以繼承BroadcastReceiver,就可以有一個(gè)廣播接受器了。有個(gè)接受器還不夠,我們還得重寫B(tài)roadcastReceiver里面的onReceiver方法,當(dāng)來(lái)廣播的時(shí)候我們要干什么,這就要我們自己來(lái)實(shí)現(xiàn),不過(guò)我們可以搞一個(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, "來(lái)自"+sms[i].getDisplayOriginatingAddress()+" 的消息是:"+sms[i].getDisplayMessageBody(), Toast.LENGTH_SHORT).show(); } //終止廣播,在這里我們可以稍微處理,根據(jù)用戶輸入的號(hào)碼可以實(shí)現(xiàn)短信防火墻。 abortBroadcast(); } }?當(dāng)實(shí)現(xiàn)了廣播接收器,還要設(shè)置廣播接收器接收廣播信息的類型,這里是信息:android.provider.Telephony.SMS_RECEIVED
? 我們就可以把廣播接收器注冊(cè)到系統(tǒng)里面,可以讓系統(tǒng)知道我們有個(gè)廣播接收器。這里有兩種,一種是代碼動(dòng)態(tài)注冊(cè):
//生成廣播處理 smsBroadCastReceiver = new SmsBroadCastReceiver(); //實(shí)例化過(guò)濾器并設(shè)置要過(guò)濾的廣播 IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); //注冊(cè)廣播 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> <!--廣播注冊(cè)--> <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)限申請(qǐng) --> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> </manifest>?兩種注冊(cè)類型的區(qū)別是:
???? 1)第一種不是常駐型廣播,也就是說(shuō)廣播跟隨程序的生命周期。
???? 2)第二種是常駐型,也就是說(shuō)當(dāng)應(yīng)用程序關(guān)閉后,如果有信息廣播來(lái),程序也會(huì)被系統(tǒng)調(diào)用自動(dòng)運(yùn)行。
轉(zhuǎn)載于:https://www.cnblogs.com/622698abc/archive/2013/03/12/2956493.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Android 广播机制---BroadCast的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 漫威推出nft藏品 相关概念十分火
- 下一篇: 音乐应用开发Android应用开发--M