監聽網絡廣播

//這是一個網絡監聽的工具類

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

/**
 * User:Bick
 * Created by Administrator-10-24 15 : 30
 */

public class NetworkConnectivityUtils {


    public void GetNetWorkConnectivity(Context context, MyConnectivityReceiver receiver) {
        //過濾器
        IntentFilter filter = new IntentFilter();
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); //添加意圖Action網絡意圖
        context.registerReceiver(receiver, filter);//這句話很重要 註冊 register廣播receiver
    }

    public static class MyConnectivityReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            ConnectivityManager connMag = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo wifi = connMag.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            NetworkInfo mobile = connMag.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

            if (!wifi.isConnected() && !mobile.isConnected()) {
                //沒網絡 獲取數據庫
                networkM.NoNetWork();
            }else if(mobile.isConnected()){

                networkM.mobileNetWork();
            } else {

                //有網絡 走請求
                //請求數據
                networkM.haveNetWork();
            }
        }
        private NetworkM networkM;
        public void setNetworkM(NetworkM networkM){
            this.networkM=networkM;
        }

        public interface NetworkM{
            void haveNetWork();
            void NoNetWork();
            void mobileNetWork();
        }
    }

}

// 在Activity中需要判斷的地方調用

//實例化工具類
        NetworkConnectivityUtils utils=new NetworkConnectivityUtils();
        //實例化網絡廣播監聽
        NetworkConnectivityUtils.MyConnectivityReceiver receiver= new NetworkConnectivityUtils.MyConnectivityReceiver();
        //調用初始化 註冊廣播的方法
        utils.GetNetWorkConnectivity(this,receiver);
        //廣播的回調方法
        receiver.setNetworkM(new NetworkConnectivityUtils.MyConnectivityReceiver.NetworkM() {
            @Override
            public void haveNetWork() {
                Toast.makeText(MainActivity.this,"網絡一切正常",Toast.LENGTH_SHORT).show();
            }
            @Override
            public void NoNetWork() {
                Toast.makeText(MainActivity.this, "網絡已經斷開,請檢查網絡", Toast.LENGTH_LONG).show();
            }
            @Override
            public void mobileNetWork() {
                Toast.makeText(MainActivity.this, "移動網已連接", Toast.LENGTH_LONG).show();
            }
        });

別忘了加聯網權限 

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章