廣播的基本用法

一、靜態(tài)注冊(cè)廣播

//在清單文件配置<receiver><receiver/>
<receiver

android:name=".receiver1.BootComleteReceiver"

android:enabled="true"? ?

android:exported="true">? ?

<intent-filter>? ? ? ?

<action? android:name="android.intent.action.BOOT_COMPLETED" />? ?

</intent-filter>

</receive


二、模擬開(kāi)機(jī)網(wǎng)絡(luò)狀態(tài)

/**

* 廣播接收器:模擬動(dòng)態(tài)監(jiān)聽(tīng) :網(wǎng)絡(luò)變化(系統(tǒng)廣播)

創(chuàng)建一個(gè)Receiver對(duì)象,繼承BroadcastReceiver

*/

public class NetWorkChangeReceiver? extends BroadcastReceiver {

@Override

? ? public void onReceive(Context context, Intent intent) {

//獲取網(wǎng)絡(luò)管理器類(lèi)

ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

//網(wǎng)絡(luò)信息

NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();

if (activeNetworkInfo!=null && activeNetworkInfo.isAvailable()){

Toast.makeText(context,"有網(wǎng)",Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(context,"沒(méi)網(wǎng)",Toast.LENGTH_SHORT).show();

?????????????? }

??????? }

}

//模擬完畢后要在Activity中注冊(cè)廣播

//注冊(cè)廣播

netWorkChangeReceiver = newNetWorkChangeReceiver();

//廣播接收器

IntentFilter intentFilter = newIntentFilter();//意圖過(guò)濾器intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//接受網(wǎng)絡(luò)變化registerReceiver(netWorkChangeReceiver, intentFilter);//注冊(cè)廣播? 誰(shuí)接? 誰(shuí)收

//有注冊(cè)就有取消注冊(cè)

protected void onDestroy() {

super.onDestroy();

//注銷(xiāo)廣播

? ? unregisterReceiver(netWorkChangeReceiver);

}


三、動(dòng)態(tài)注冊(cè)

//1.首先創(chuàng)建幾個(gè)receiver對(duì)象,在清單文件里會(huì)生成對(duì)應(yīng)的<receiver><receiver/>? ,粗體部分則為自定義.name

<receiver

android:name=".receiver2.MyReceiver1"

android:enabled="true"? ?

android:exported="true">? ?

<intent-filter android:priority="80">? ? ? ?

<action? android:name="com.jiyun.action.ABC" />? ?

</intent-filter>

</receiver>

//2.代碼實(shí)現(xiàn)注冊(cè)

//<1>標(biāo)準(zhǔn)廣播

Intent intent =new Intent("com.jiyun.action.ABC");

intent.putExtra("name" ,"我是廣播傳過(guò)來(lái)的值");???? //廣播同樣可以傳值

sendBroadcast(intent);

//<2>有序廣播——具有攔截廣播的功能

Intent intent1 =new Intent("com.jiyun.action.ABC");

sendOrderedBroadcast(intent1 ,null);

//3.有序廣播的攔截功能

abortBroadcast();//攔截廣播

//4.廣播中非頁(yè)面之間的啟動(dòng)頁(yè)面

Intent intentMain =new Intent(context, MainActivity.class);

intentMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //非頁(yè)面之間啟動(dòng)頁(yè)面, 需要自帶加載任務(wù)棧

context.startActivity(intentMain);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容