Android 网络状态变化的监听

1.在流量网页,时实现断网,提醒等功能。

 需要权限

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

2.注册一个BroadcastReceiver来接受网络状态的变化

public class NetworkChange extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        NetworkInfo wifiinfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if(!networkInfo.isConnected()&&!wifiinfo.isConnected()){

            /**
             *
             */
            Toast.makeText(context,"网络不可用!",Toast.LENGTH_SHORT).show();

        }else{
            if(wifiinfo.isConnected()){
                Toast.makeText(context,"wifi连接中!",Toast.LENGTH_SHORT).show();

            }
            if(networkInfo.isConnected()){
                Toast.makeText(context,"流量连接中!",Toast.LENGTH_SHORT).show();

            }
        }

    }
}

3.在activity总注册接收器即可:

public class MainActivity extends AppCompatActivity {

   private IntentFilter intentFilter;
    private NetworkChange networkChange;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /**
         * 监听网络状态
         */
        intentFilter=new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        networkChange=new NetworkChange();
        registerReceiver(networkChange,intentFilter);
     
    }

 /**
     * 动态注册接受者,记得取消注册
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(networkChange);
    }
}
今天多一点积累,明天少一分烦恼
原文地址:https://www.cnblogs.com/galibujianbusana/p/6398125.html