日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android中广播接收者BroadcastReceiver详解

發布時間:2025/3/21 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中广播接收者BroadcastReceiver详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 接收系統的廣播步驟

?

(1)??新建一個類繼承BroadcastReceiver

?

以監聽sd卡狀態的廣播接收者為例

1 public class SdCardBroadcastReceiver extends BroadcastReceiver { 2 3 @Override 4 public void onReceive(Context context, Intent intent) { 5 String action = intent.getAction(); 6 if("android.intent.action.MEDIA_MOUNTED".equals(action)){ 7 System.out.println("sd卡已掛載"); 8 }else if("android.intent.action.MEDIA_UNMOUNTED".equals(action)){ 9 System.out.println("sd卡已卸載"); 10 } 11 } 12 13 }

?

形象一點的比喻, 這一步相當于買了個收音機

?

(2)?在清單文件中注冊

?

1 <!-- 相當于裝電池 --> 2 <receiver android:name="com.example.sdbroadcast.SdCardBroadcastReceiver"> 3 <!-- 相當于調頻道 --> 4 <intent-filter> 5 <action android:name="android.intent.action.MEDIA_MOUNTED"/> 6 <action android:name="android.intent.action.MEDIA_UNMOUNTED"/> 7 <data android:scheme="file"/> 8 </intent-filter> 9 </receiver>

?

這一步相當于裝電池

?

(3)??在清單文件中添加意圖過濾器,action里寫監聽的內容

?

1 <!-- 相當于調頻道 --> 2 <intent-filter> 3 <action android:name="android.intent.action.MEDIA_MOUNTED"/> 4 <action android:name="android.intent.action.MEDIA_UNMOUNTED"/> 5 <data android:scheme="file"/> 6 </intent-filter>

?

這一步相當于調頻道了

?

2. 發送自定義的無序廣播

?

(1) 發送廣播

?

1 public void startBroadcast(View view){ 2 //開啟廣播 3 //創建一個意圖對象 4 Intent intent = new Intent(); 5 //指定發送廣播的頻道 6 intent.setAction("com.example.BROADCAST"); 7 //發送廣播的數據 8 intent.putExtra("key", "發送無序廣播,順便傳遞的數據"); 9 //發送 10 sendBroadcast(intent); 11 }

?

(2) 接收廣播

?

新建一個類,繼承BroadcastReceiver

?

1 public class UnorderedReceiver extends BroadcastReceiver { 2 3 @Override 4 public void onReceive(Context context, Intent intent) { 5 String action = intent.getAction(); 6 7 String data = intent.getStringExtra("key"); 8 9 System.out.println("接受到了廣播,action:"+ action +",data:"+data); 10 11 //接受到了廣播,action:com.example.BROADCAST,data:發送無序廣播,順便傳遞的數據 12 } 13 14 }

?

記得在清單文件中進行注冊

?

1 <receiver android:name="com.example.selfreceiver.UnorderedReceiver"> 2 <intent-filter> 3 <action android:name="com.example.BROADCAST"/> 4 </intent-filter> 5 </receiver>

?

打印出的結果:

?

?

3. 發送自定義的有序廣播

(1) 發送廣播

1 // 發送有序廣播 2 public void sendOrderedBroad(View view) { 3 Intent intent = new Intent(); 4 intent.setAction("com.example.ORDERED"); 5 // 發送無序廣播 6 sendOrderedBroadcast(intent,//意圖動作,指定action動作 7 null, //receiverPermission,接收這條廣播具備什么權限 8 new FinalReceiver(),//resultReceiver,最終的廣播接受者,廣播一定會傳給他 9 null, //scheduler,handler對象處理廣播的分發 10 0,//initialCode,初始代碼 11 "每人發10斤大米,不得有誤!", //initialData,初始數據 12 null//initialExtras,額外的數據,如果覺得初始數據不夠,可以通過bundle來指定其他數據 13 ); 14 }

?

在上面的代碼中,廣播發送者發送了一條廣播:"每人發10斤大米,不得有誤!"

?

(2) 接收廣播

?

新建一個類, 繼承BroadcastReceiver,并在清單文件中進行注冊

以下是所有的廣播接收者在清單文件中的注冊

?

?

權限從-1000 至 1000

?

1) 權限高的廣播接收者可以修改廣播,甚至可以終止廣播

?

權限高的廣播接收者1:

?

1 public class ShengReceiver extends BroadcastReceiver { 2 3 @Override 4 public void onReceive(Context context, Intent intent) { 5 6 //獲取廣播的數據 7 String data = getResultData(); 8 9 //修改 10 setResultData("中央下達福利,每人5斤大米"); 11 12 System.out.println("省政府收到指示, data : "+data); 13 } 14 15 }

?

在這里, 這個接收者修改廣播為: "中央下達福利,每人5斤大米"

?

權限低的廣播接收者

?

1 public class PeopleReceiver extends BroadcastReceiver { 2 3 @Override 4 public void onReceive(Context context, Intent intent) { 5 //獲取廣播的數據 6 String data = getResultData(); 7 System.out.println("老百姓收到福利,感謝黨, data : "+data); 8 } 9 10 }

?

這樣,在控制臺打印出來的信息為:

?

?

權限低的接收者 接收到的廣播就是修改后的了

?

2) 終止廣播

?

權限高的廣播接收者:

?

1 public class ShengReceiver extends BroadcastReceiver { 2 3 @Override 4 public void onReceive(Context context, Intent intent) { 5 6 //獲取廣播的數據 7 String data = getResultData(); 8 9 //也可以終止廣播,權限小的接收者就接收不到廣播了 10 abortBroadcast(); 11 12 System.out.println("省政府收到指示, data : "+data); 13 } 14 15 }

?

控制臺打印:

?

權限小的就接收不到廣播了....

?

(3)?resultReceiver

?

可以在廣播發送者的應用中建一個resultReceiver, 用于接收最終到達的廣播,

無論廣播是否終止,都會被resultReceiver接收

?

1 public class FinalReceiver extends BroadcastReceiver { 2 3 @Override 4 public void onReceive(Context context, Intent intent) { 5 String resultData = getResultData(); 6 System.out.println("人民收到的最終福利是: "+ resultData); 7 } 8 9 }

?

控制臺打印信息:

?

(終止廣播后):

(修改廣播后):

?

4. 補充:

有序廣播和無序廣播的區別:

?

有序廣播:發送方發出后,幾乎同時到達多個廣播接收者處,某個接收者不能接收到廣播后進行一番處理后傳給下一個接收者,并且無法終止廣播繼續傳播;Context.sendBroadcast(intent);

有序廣播:廣播接收者需要提前設置優先級,優先級高的先接收到廣播,優先級數值為-1000~1000,在AndroidManifest.xml的<intent-filter android:priority="xxx">設置;比如存在3個廣播接收者A、B、C,優先級A>B>C,因此A最先收到廣播,當A收到廣播后,可以向廣播中添加一些數據給下一個接收者(intent.putExtra()),或者終止廣播(abortBroadcast());Context.sendOrderedBroadcast(intent);

?

轉載于:https://www.cnblogs.com/wanghaoyuhappy/p/5292733.html

總結

以上是生活随笔為你收集整理的Android中广播接收者BroadcastReceiver详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91精品在线视频观看 | 欧美性做爰大片免费 | 色天堂在线视频 | 私拍在线 | 日韩人妻无码精品综合区 | 波多野结衣女同 | 亚洲黄色片视频 | www.com捏胸挤出奶 | 亚洲韩国精品 | 1000部国产精品成人观看 | 噜噜色综合 | 国产一级特黄aaa大片 | 亚洲乱码国产乱码精品 | 亚洲欧美成人一区二区 | 午夜精品在线观看 | 白白色视频在线 | 综合色久 | 欧美大胆a视频 | 中国人妖和人妖做爰 | 欧美真人性野外做爰 | 一级黄色免费看 | 亚洲激情a | 中文字幕av高清 | 中文字幕一区二区三区精彩视频 | 久久亚洲精少妇毛片午夜无码 | 亚洲 国产 日韩 欧美 | 精品国产乱码久久久久 | 黄瓜视频成人 | 精品一区二区三区蜜桃 | 午夜影院网站 | 69视频免费 | 九九热免费在线 | 中文字幕一区二区在线视频 | 青娱乐91视频 | www.啪| 亚洲av无码一区二区三区人妖 | 电影寂寞少女免费观看 | 嫩模啪啪 | 97公开视频 | 欧美黑吊大战白妞 | 密色av | 中文字幕日本一区二区 | 亚洲国产精品久 | 亚洲 欧美 日韩在线 | 欧美骚视频 | 97免费看| 日操干 | 国产三级91| 美女尻逼视频 | 8090理论片午夜理伦片 | 黄色美女一级片 | 亚洲av综合色区无码二区爱av | 麻豆国产精品 | 午夜影院在线播放 | 成年人免费高清视频 | 青青操免费在线视频 | 91视频在线观看视频 | 亚洲av综合一区二区 | 福利免费在线观看 | 99一区二区 | 老熟女一区二区三区 | 天天爱夜夜爱 | 国产亚洲精品久久久久久无几年桃 | 日韩欧美亚洲精品 | www操操操 | 日本网站黄色 | 日韩精品在线一区二区三区 | 无码一区二区精品 | 欧美肉大捧一进一出免费视频 | 亚洲第五页 | 成人免费在线小视频 | 香蕉福利视频 | 欧亚乱熟女一区二区在线 | 国产精品偷伦视频免费看 | 色女人在线 | 亚洲精品在线播放视频 | 欧美一级片在线免费观看 | 一级特黄av | 爱情岛论坛亚洲自拍 | 丁香免费视频 | 肮脏的交易在线观看 | 韩国明星乱淫(高h)小说 | 国产剧情在线视频 | 误杀1电影免费观看高清完整版 | 51成人| 又大又粗弄得我出好多水 | 国产成人午夜精品无码区久久 | 国产丝袜在线视频 | 日韩欧美激情视频 | 亚洲av无码专区在线播放中文 | av在线有码| 日韩一区二区三区免费视频 | 69视频免费观看 | 久艹视频在线观看 | 国产成人99久久亚洲综合精品 | 农村老妇性真猛 | 国产无限制自拍 | 欧美在线网站 | 欧美色图一区二区 |