Android简单实现实时监听网络状态
2017-11-15 14:49
525 查看
先简单说一下思路:网络变化时系统会发出广播。所以我们监听这个广播,利用接口回调通知activity做相应的操作就好了。
写个类继承BroadcastReceiver(不要忘记在清单文件中注册)
需要在清单文件中添加权限
回调接口(NetEvevt)
BaseActivity实现这个接口
做了个Demo供大家参考 Demo下载
思路
判断网络状态(写个工具类NetUtil)写个类继承BroadcastReceiver(不要忘记在清单文件中注册)
需要在清单文件中添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
回调接口(NetEvevt)
BaseActivity实现这个接口
直接上代码
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; /** * Created by Hoban on 2017/11/15. */ public class NetUtil { /** * 没有连接网络 */ public static final int NETWORK_NONE = -1; /** * 移动网络 */ public static final int NETWORK_MOBILE = 0; /** * 无线网络 */ public static final int NETWORK_WIFI = 1; public static int getNetWorkState(Context context) { // 得到连接管理器对象 ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager .getActiveNetworkInfo(); if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) { if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) { return NETWORK_WIFI; } else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) { return NETWORK_MOBILE; } } else { return NETWORK_NONE; } return NETWORK_NONE; } }
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; /** * Created by Hoban on 2017/11/15. */ public class NetBroadcastReceiver extends BroadcastReceiver { public NetEvevt evevt = BaseActivity.evevt; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { int netWorkState = NetUtil.getNetWorkState(context); // 接口回调传过去状态的类型 evevt.onNetChange(netWorkState); } } // 自定义接口 public interface NetEvevt { public void onNetChange(int netMobile); } }
import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.widget.TextView; /** * Created by Hoban on 2017/11/15. */ public class MainActivity extends BaseActivity { private TextView textView,txtView; ListView listView; //声明一个ListView对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView= (TextView) findViewById(R.id.textView); txtView=(TextView)this.findViewById(R.id.txtView); //启动时判断网络状态 boolean netConnect = this.isNetConnect(); if (netConnect){ textView.setVisibility(View.GONE); txtView.setText("网络连接正常"); }else { textView.setVisibility(View.VISIBLE); txtView.setText("网络连接异常"); } } @Override public void onNetChange(int netMobile) { super.onNetChange(netMobile); //网络状态变化时的操作 if (netMobile==NetUtil.NETWORK_NONE){ textView.setVisibility(View.VISIBLE); txtView.setText("网络连接异常"); }else { textView.setVisibility(View.GONE); txtView.setText("网络连接正常"); } } }
做了个Demo供大家参考 Demo下载
相关文章推荐
- Android BroadcastReceiver实现网络状态实时监听
- Android 实时监听网络状态
- Android实时监听网络状态(1)
- android监听网络状态,实时更新网络状态
- 【Android 】注册广播,实时监听网络连接与断开状态变化
- Android实时监听网络状态
- Android 实时监听网络状态
- Android 实时监测(监听)网络连接状态变化
- Android实时监听网络状态
- Android 通过注册广播,实时监听网络连接与断开状态的变化
- Android开发:实时监听网络状态
- Android 注册广播,实时监听网络连接与断开状态变化
- Android实时监听网络状态
- 使用观察者模式Observer实现对Android网络状态的监听
- Android实时监听网络连接状态
- Android实时监听网络状态(2)
- Android 网络状态实时监听代码实例(一)
- Android实时监听网络状态(1)
- Android实时监听网络状态
- Android实时监听网络状态