溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Android網(wǎng)絡(luò)連接相關(guān)廣播

發(fā)布時(shí)間:2020-10-08 14:20:55 來(lái)源:網(wǎng)絡(luò) 閱讀:1598 作者:年少的風(fēng) 欄目:移動(dòng)開(kāi)發(fā)


新建一個(gè)類(lèi)繼承BroadcastReceiver,用于接收廣播,并作相應(yīng)的處理

class NetChangeReceiver extends BroadcastReceiver {
	
    @Override
    public void onReceive(Context context, Intent intent) {
		
        String action = intent.getAction();
        if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
            System.out.println("網(wǎng)絡(luò)狀態(tài)更改");
        }else if (action.equals(EthernetManager.ETHERNET_STATE_CHANGED_ACTION)) {
            System.out.println("網(wǎng)線(xiàn)狀態(tài)更改");
        }
    }
}

在AndroidMenifest.xml的<application></application>標(biāo)簽中注冊(cè)廣播接收過(guò)濾條件

<!-- 網(wǎng)絡(luò)更改廣播 -->
<receiver android:name="com.coship.entropic.factorytest.receiver.NetChangeReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

<!-- 網(wǎng)線(xiàn)狀態(tài)改變廣播 -->
<receiver android:name="com.coship.entropic.factorytest.receiver.NetChangeReceiver">
    <intent-filter>
        <action android:name="android.net.ethernet.ETHERNET_STATE_CHANGED" />
    </intent-filter>
</receiver>


接收廣播只需要以上兩個(gè)步驟,當(dāng)然還需要配置權(quán)限

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

完成之后,上面的兩個(gè)System.out.println();輸出內(nèi)容在控制臺(tái)是看不到的,因?yàn)榫W(wǎng)絡(luò)狀態(tài)更改會(huì)導(dǎo)致android設(shè)備與電腦的連接斷開(kāi),故而控制臺(tái)不會(huì)有輸出。如果要測(cè)試是否能夠接收到廣播,可以采用其他方式檢測(cè),比如

handler.sendEmptyMessage(0);

通知界面彈出信息提示,或者直接打印到屏幕上顯示




上面的內(nèi)容網(wǎng)上很多資料,僅僅一個(gè)需要指出的是

<action android:name="android.net.ethernet.ETHERNET_STATE_CHANGED" />

由于這個(gè)用的比較少,所以網(wǎng)上的資料也很少。下面羅列一下有線(xiàn)連接相關(guān)的ACTION

ConnectivityManager.CONNECTIVITY_ACTION    //網(wǎng)絡(luò)狀態(tài)更改
//對(duì)應(yīng)action.equals(ConnectivityManager.CONNECTIVITY_ACTION)


EthernetManager.ETHERNET_START_INTERFACE_ACTION
EthernetManager.ETHERNET_STATE_CHANGED_ACTION
EthernetManager.ETHERNET_STOP_INTERFACE_ACTION
EthernetManager.NETWORK_CONNECTED_ACTION
EthernetManager.NETWORK_DISCONNECTED_ACTION


EthernetManager.NETWORK_STATE_CHANGED_ACTION    //網(wǎng)線(xiàn)狀態(tài)更改
//對(duì)應(yīng)action.equals(EthernetManager.ETHERNET_STATE_CHANGED_ACTION)
//可以相應(yīng)網(wǎng)線(xiàn)的熱插拔事件


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI