前言
Android tv 上通常会判断当前网络是有线连接还是无线连接,那么可以通过 Android 的广播来通知网络连接状态。
源码
广播监听
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.NetworkInfo;
import android.net.ConnectivityManager;
public class NetWorkReceiver extends BroadcastReceiver{
public int NET_ETHERNET = 1;
public int NET_WIFI = 2;
public int NET_NOCONNECT = 0;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(
ConnectivityManager.CONNECTIVITY_ACTION)
|| action.equals(
"android.net.conn.CONNECTIVITY_CHANGE")) {
switch (isNetworkAvailable(context)) {
case 1:
System.out.println("-----------networktest---------有线");
break;
case 2:
System.out.println("-----------networktest---------无线");
break;
case 0:
System.out.println("-----------networktest---------无网络");
break;
default:
break;
}
}
private int isNetworkAvailable(Context context) {
ConnectivityManager connectMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ethNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET);
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (ethNetInfo != null && ethNetInfo.isConnected()) {
return NET_ETHERNET;
} else if (wifiNetInfo != null && wifiNetInfo.isConnected()) {
return NET_WIFI;
} else {
return
静态注册广播
在 AndroidManifest.xml中注册广播
<!--静态注册广播 -->
<receiver android:name=".WifiReceiver" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE"/>
<action android:name="android.Net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>