android課件1.0版day21android廣播機(jī)制學(xué)習(xí)筆記_第1頁(yè)
android課件1.0版day21android廣播機(jī)制學(xué)習(xí)筆記_第2頁(yè)
android課件1.0版day21android廣播機(jī)制學(xué)習(xí)筆記_第3頁(yè)
android課件1.0版day21android廣播機(jī)制學(xué)習(xí)筆記_第4頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Day21廣播機(jī)作者郵箱Day21廣播機(jī)作者郵箱BroadcastReceiver簡(jiǎn)BroadcastReceiver創(chuàng)BroadcastReceiver對(duì)象 需要繼承 android.content.BroadcastReceiver,onReceive 方法。publicclassMyReceiver2extendsBroadcastReceiverpublicvoidonReceive(Contextent)/ TODO Auto-generated method stub Toast.makeText(context接收到廣播就下課,onReceive方法內(nèi), 可以獲取隨廣播而來(lái)的 e

2、nt 中的數(shù)據(jù),這非常重要,就像在創(chuàng)建完 的 BroadcastReceiver之后,還不能夠使它進(jìn)入工作狀態(tài), 需要為它注BroadcastReceiver 就像一個(gè)缺少選臺(tái)按鈕的收Baaecer 用接收播組用組與組之進(jìn)通以跨用程序傳如作統(tǒng)池量低發(fā)一廣播樣的序面以去個(gè)播,可以關(guān)閉程序里面比較耗電的功能,提示用戶注意保存進(jìn)度什么的,還如其它安裝新應(yīng)用等,還有通用例動(dòng)特線,件等.Android 中的廣播機(jī)制設(shè)計(jì)的非常出色,很多事情原本需要開(kāi)發(fā)者親自操作的,現(xiàn)在只Android BroadcastReceiver三、 靜特點(diǎn)三、 靜特點(diǎn): 當(dāng)程序退出后,廣播依然存在,直至應(yīng)用被卸載是在Androi

3、dManifest.xml 文件中配置的receiverent-actionent.action.MY_BROADCASTcategoryent.category.DEFAULTent-是否只接收本應(yīng)用的動(dòng)都繼承了ContextWrapper,所以可以直接調(diào)用。在實(shí)際應(yīng)用中,在Activity或Service中了一個(gè)BroadcastReceiver,當(dāng)這個(gè)Activity 或Service 被銷毀時(shí)如果沒(méi)有解除mbcr=newMyBroadcastReceiver(); entFilter filter = newregisterReceiver(mbcr, filter);/解mbcr =

4、 protectedvoidonDestroy() 四、 廣播的發(fā)4.1發(fā)送標(biāo)準(zhǔn)廣4.2四、 廣播的發(fā)4.1發(fā)送標(biāo)準(zhǔn)廣4.2發(fā)送有序廣ent=/發(fā)送有序廣播。 參數(shù)一:意圖對(duì)象 參數(shù)二:權(quán)限。是否需要接受者需要選取才可/以ent,/創(chuàng)建意圖對(duì)象,并指明actionactionent=廣播的發(fā)送和接收是跨進(jìn)程的,一個(gè)app 發(fā)送的廣播,其他的app 限和問(wèn)題來(lái)了/null0 五、 廣播的五、 廣播的分廣播,接收者相互之間不會(huì)有影響。對(duì)于這種廣播,接收者無(wú)法終止廣播,即無(wú)法 其他六、 實(shí)戰(zhàn)運(yùn)用內(nèi)public六、 實(shí)戰(zhàn)運(yùn)用內(nèi)publicclassSmsRecevierextendsBroadcast

5、Receiver publicvoidonReceive(Contextent)/TODOAuto-generatedmethodToast.makeText(context有短消息來(lái)了primarydatauserion(PDUS主數(shù)據(jù)用戶站Objectpdus=(Object)將pdusSmsMessagesmsMsgs=new循環(huán)遍歷轉(zhuǎn)換成SmsMessagefori=0;i smsMsgs.length;i+)ProtocolDataUnit(協(xié)議數(shù)據(jù)單元smsMsgsi=SmsMessage.createFromPdu(byte) 使用方式android:priority每個(gè)廣播接收

6、者是有序接收廣播,如果中間使用 abortBroadcast()方每個(gè)接收者接收的 ent都是從發(fā)送方發(fā)送的同一個(gè) ent對(duì)象每個(gè)接收者都是孤立的,注意:1、靜態(tài) app一旦安裝在系統(tǒng),則可以接收到指定的廣播。不管這個(gè)app有沒(méi)有啟動(dòng)。 2、動(dòng)態(tài) 的廣播接收者只有在 完成后才能接收到廣播,當(dāng) 他的組件銷毀的時(shí)候,廣播接收者也應(yīng)該解除 。StringStringphoneNumber=null; String data = null;StringBuilderbuilder=new循環(huán)遍歷從SmsMessagefor(SmsMessagesms:smsMsgs) phoneNumber=/獲內(nèi)d

7、ata= /每次拿到的內(nèi)容存放到StringBuilder中,最后顯示完整內(nèi)Log.i(123號(hào)碼Log.i(123內(nèi)容/后續(xù)就終止接的邏自定義Notificationpat.Builder nb = neNotificationManagernm=(NotificationManager)contextnm.notify(2nb.build();靜廣receiverent-filter接收短消息的條件(頻道actionent-得到系申請(qǐng)獲取短消息的權(quán)限 七、 實(shí)戰(zhàn)運(yùn)用-七、 實(shí)戰(zhàn)運(yùn)用-讀電如果 閱讀 ,可能是全屏閱讀,這個(gè)時(shí)候用戶就看不到剩余的電量, 就可以 為他們提供電量的信息。要想做到這

8、一點(diǎn), 需要接收一條電量變化的廣播,然后獲取百publicclassBatteryReceiverextendsBroadcastReceiver publicvoidonReceive(Contextent)/ TODO Auto-generated method stub String action =ifent.ACTION_BATTERY_CHANGED)當(dāng)前電量(第一個(gè)參數(shù)當(dāng)前的電量key值,第二個(gè)參數(shù)默認(rèn)值levelExtra(BatteryManager.EXTRA_LEVEL,scaleExtra(BatteryManager.EXTRA_SCALE,percentlevel*

9、100scale; Log.i(123, 當(dāng)前電量: + level);Log.i(123最大電量Log.i(123當(dāng)前電量百分比關(guān)于狀態(tài)的判斷(是否在充電us =US,0); Log.i(123, sus:+sswitchus)caseUS_CHARGING:Log.i(123充電caseUS_DISCHARGING:Log.i(123放電caseUS_UNKNOWN:Log.i(123未知性能的參數(shù)(和Health有關(guān)healthExtra(BatteryManager.EXTRA_HEALTH,BatteryManager.BATTERY_HEALTH_GOOD性能switch(heal

10、th)caseLog.iLog.i(123電池溫度過(guò)低caseBatteryManager.BATTERY_HEALTH_DEAD: Log.i(123, 電池壞掉了);caseBatteryManager.BATTERY_HEALTH_GOOD: Log.i(123, 電池健康);caseBatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: Log.i(123, 電池電壓過(guò)高);caseBatteryManager.BATTERY_HEALTH_OVERHEAT: Log.i(123, 電池溫度過(guò)高);caseBatteryManager.BATTERY_H

11、EALTH_UNKNOWN: Log.i(123, 電池溫度過(guò)低);caseBatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: Log.i(123, 電池溫度過(guò)低);動(dòng)廣播接收receiver2 = new BatteryReceiver(); entFilter filter = new/電池電entFilter filter2 = newregisterReceiver(receiver2, filter2);注意:在Activity銷毀時(shí)應(yīng)該注銷廣八、 實(shí)戰(zhàn)運(yùn)用開(kāi)機(jī)廣九、 實(shí)戰(zhàn)運(yùn)用八、 實(shí)戰(zhàn)運(yùn)用開(kāi)機(jī)廣九、 實(shí)戰(zhàn)運(yùn)用網(wǎng)絡(luò)狀在某些場(chǎng)合,比如用

12、戶瀏覽網(wǎng)絡(luò)信息時(shí),網(wǎng)絡(luò)突然斷開(kāi), 要及時(shí)地提醒用戶網(wǎng)絡(luò)已 斷開(kāi)。要實(shí)現(xiàn)這個(gè)功能, 可以接收網(wǎng)絡(luò)狀態(tài)改變這樣一條廣播,當(dāng)由連接狀態(tài)變?yōu)閿嚅_(kāi)狀態(tài)時(shí),系統(tǒng)就會(huì)發(fā)送一條廣播, 接收到之后,再通過(guò)網(wǎng)絡(luò)的狀態(tài)做出相應(yīng)的操作publicclassConnectivityReceiverextendsBroadcastReceiver publicvoidonReceive(Contextent)/TODOAuto-generatedmethod網(wǎng)絡(luò)狀態(tài)的ConnectivityManagercm=(ConnectivityManager)/ 處于活躍狀態(tài)的網(wǎng)絡(luò)信public classpleteReceiv

13、erextendsBroadcastReceiver publicvoidonReceive(Contextent)/TODOAuto-generatedmethod開(kāi)機(jī)的廣StringactionLog.i(123, /啟動(dòng)界ent2 = new開(kāi)機(jī)完畢的條件 ent-filteraction十、 實(shí)戰(zhàn)運(yùn)用來(lái)電和去電十、 實(shí)戰(zhàn)運(yùn)用來(lái)電和去電信定義廣播接收publicclassPhoneReceiverextendsBroadcastReceiver publicvoidonReceive(Contextent)/TODOAuto-generatedmethod/實(shí)現(xiàn)對(duì)應(yīng)處Stringacti

14、onif /打StringphoneNumberNetworkInfoinfo=if(info!=null&info.isConnectedOrConnecting()/這時(shí)候網(wǎng)絡(luò)處于里連接ok的狀Stringnameinfo.getTypeName();Toast.makeText(contextname+正在連接或已連接, else/沒(méi)有正常連接的Toast.makeText(context網(wǎng)絡(luò)連接不正常,查看網(wǎng)絡(luò)設(shè)置, 關(guān)于網(wǎng)絡(luò)狀態(tài)的條件 ent-filter網(wǎng)絡(luò)連接發(fā)生變化的時(shí)候actionent-使用到了網(wǎng)絡(luò)狀態(tài)相關(guān)的API,所以需網(wǎng)絡(luò)狀態(tài)的權(quán)限 uses-Log.i(123, 打出

15、號(hào)碼: + phoneNumber);elseundle/ key在StringcomingNumber=bundleLog.i(123, 來(lái)電的號(hào)碼: + comingNumber);ephonyManagertm=ephonyManager)e=switche)E_IDLEToast.makeText(context, E_OFFHOOK:Toast.makeText(context, 正在接聽(tīng)E_RINGINGToast.makeText(context來(lái)電響鈴, 廣播接收receiverent-filter!-打的條件-action來(lái)電的條件actionent-加入權(quán)!-申請(qǐng)得到打信息的權(quán)限-uses-十一、 實(shí)戰(zhàn)運(yùn)用十一、 實(shí)戰(zhàn)運(yùn)用屏幕狀publicclassScreenOnOffReceiverextendsBroadcastRe

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論