日韩性视频-久久久蜜桃-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详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 四虎在线播放 | 亚洲综合伊人久久 | 韩国美女一区二区 | 在线观看网站av | 亚洲精品美女网站 | 天堂在线一区二区 | 一区二区三区精品视频在线观看 | 国产欧美日韩精品在线 | 91丨国产丨白丝 | 高潮一区二区三区 | 美日韩免费视频 | www五月| 日韩精品一区二区三区在线观看 | 亚洲精品动漫在线观看 | 日韩色综合网 | 成人黄色大片在线观看 | 久久久久成人片免费观看蜜芽 | 欧美国产一级 | 精品人妻一区二区三区免费看 | 91一二区| 精品91久久久 | 免费av导航 | 亚洲一二区 | 神马久久久久久久久 | 日韩avv | 欧美精品在线免费观看 | 狠狠搞av| 国产精品999在线观看 | eeuss鲁丝片一区二区三区 | 五月婷婷狠狠干 | 国产人妻人伦精品1国产丝袜 | www国产无套内射com | 肉体粗喘娇吟国产91 | 99国产视频 | 免费av手机在线观看 | 欧美日韩一二三四区 | 欧美高清一区 | 免费91看片| 亚洲少妇视频 | 蜜臀av夜夜澡人人爽人人 | 精品国产一区二区三区久久 | 插插插干干干 | 黄色一级小视频 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 老司机深夜福利网站 | 亚洲一区二区三区高清视频 | 毛片av在线 | 日韩精品免费观看 | 国产精品视频区 | 国产精品36p | 九九午夜视频 | 久久99中文字幕 | 国产精品调教 | 亚洲第一网站 | 色呦呦免费视频 | 在线免费观看亚洲视频 | 在线视频一区二区 | 97公开免费视频 | 清清草视频 | 日本熟妇人妻中出 | 美女福利在线视频 | 蜜桃传媒一区二区亚洲 | 电家庭影院午夜 | 日韩在线第一区 | 国产美女裸体无遮挡免费视频 | 寡妇激情做爰呻吟 | 精品国产xxx | 国内自拍网站 | 免费一级suv好看的国产网站 | 四虎影院在线免费播放 | aaa级片 | www日本免费 | 成人影视在线看 | 操老女人视频 | 肉大捧一进一出免费视频 | 天天做天天爱天天操 | 在线观看亚洲欧美 | 夜夜爽网站 | 狠狠干狠狠爱 | 国产男女在线 | 欧美熟妇交换久久久久久分类 | www.欧美国产 | 成人免费毛片东京热 | www日本在线观看 | 日韩有码第一页 | 欧洲最强rapper网站直播 | 亚洲欧洲色 | 91精品国产91久久久久久黑人 | 黄色链接视频 | 亚洲av成人精品一区二区三区在线播放 | 国产色无码精品视频国产 | 西西44rtwww国产精品 | 综合久久影院 | 国产资源av| 亚洲欧洲视频在线观看 | 影音先锋亚洲成aⅴ人在 | 国产精品久久av无码一区二区 | 一级片免费 | 性一交一乱一乱一视频 |