Back

android - 增加网络检控的页面

发布时间: 2020-01-21 10:42:00

1. 在main activity (例如,包含了4个tab页的主要Activity) 中,增加 :

    final static String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
    IntentFilter intentFilter;
    NetWorkStateReceiver receiver;


    private void watchNetwork() {
        if (intentFilter == null) {
            intentFilter = new IntentFilter();
            intentFilter.addAction(CONNECTIVITY_ACTION);
            receiver = new NetWorkStateReceiver();
            receiver.setOnNetworkChange(new NetWorkStateReceiver.OnNetworkChange() {
                @Override
                public void onNetworkChange(boolean hasNetwork) {
                    if (!hasNetwork) {
                        startActivity(new Intent(MainActivity.this, NoNetworkActivity.class));
                    }
                }
            });
        }
        registerReceiver(receiver, intentFilter);
    }

2. 创建对应的network receiver 

public class NetWorkStateReceiver extends BroadcastReceiver {

    OnNetworkChange onNetworkChange;


    @Override
    public void onReceive(Context context, Intent intent) {
        if (onNetworkChange != null) {
            onNetworkChange.onNetworkChange(isNetworkAvailable(context));
        }
    }

    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivity = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity != null) {
            NetworkInfo info = connectivity.getActiveNetworkInfo();
            if (info != null && info.isConnected())
            {
                // 当前网络是连接的
                if (info.getState() == NetworkInfo.State.CONNECTED)
                {
                    // 当前所连接的网络可用
//                    Toast.makeText(context, "网络打开", Toast.LENGTH_SHORT).show();
                    Log.d("== Network", "network enable");
                    return true;
                }
            }
        }
//        Toast.makeText(context, "网络关闭", Toast.LENGTH_SHORT).show();
        Log.d("== Network", "network disable");
        return false;
    }

    public void setOnNetworkChange(OnNetworkChange onNetworkChange) {
        this.onNetworkChange = onNetworkChange;
    }

    public interface OnNetworkChange {
        void onNetworkChange(boolean hasNetwork);
    }
}

Back