温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android网络连接相关广播

发布时间:2020-10-08 14:20:55 来源:网络 阅读:1598 作者:年少的风 栏目:移动开发


新建一个类继承BroadcastReceiver,用于接收广播,并作相应的处理

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("网络状态更改");
        }else if (action.equals(EthernetManager.ETHERNET_STATE_CHANGED_ACTION)) {
            System.out.println("网线状态更改");
        }
    }
}

在AndroidMenifest.xml的<application></application>标签中注册广播接收过滤条件

<!-- 网络更改广播 -->
<receiver android:name="com.coship.entropic.factorytest.receiver.NetChangeReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

<!-- 网线状态改变广播 -->
<receiver android:name="com.coship.entropic.factorytest.receiver.NetChangeReceiver">
    <intent-filter>
        <action android:name="android.net.ethernet.ETHERNET_STATE_CHANGED" />
    </intent-filter>
</receiver>


接收广播只需要以上两个步骤,当然还需要配置权限

<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" />

完成之后,上面的两个System.out.println();输出内容在控制台是看不到的,因为网络状态更改会导致android设备与电脑的连接断开,故而控制台不会有输出。如果要测试是否能够接收到广播,可以采用其他方式检测,比如

handler.sendEmptyMessage(0);

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




上面的内容网上很多资料,仅仅一个需要指出的是

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

由于这个用的比较少,所以网上的资料也很少。下面罗列一下有线连接相关的ACTION

ConnectivityManager.CONNECTIVITY_ACTION    //网络状态更改
//对应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    //网线状态更改
//对应action.equals(EthernetManager.ETHERNET_STATE_CHANGED_ACTION)
//可以相应网线的热插拔事件


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI