Android判断网线连接

前言

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 NET_NOCONNECT;
        }
    }
}

静态注册广播

在 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>

本文参考http://blog.csdn.net/nation_chen/article/details/15813639

你可能感兴趣的:(Android)