如何判断Android设备当前是连接网络还是处于无网络状态?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1114个文字,预计阅读时间需要5分钟。
在开发过程中,为确保用户体验,常需监控手机网络状态。手机无网时,我们处理方式包括相应操作或引导用户开启网络。以下是我总结的一些经验:
当我们开发时,为了提高用户的体验,常常要监测手机的网络状态,当手机处于无网状态时,我们会做一些相应的处理或者引导用户去打开网路,以下是我总结的一些经验,不足之处,还请谅解,如果有错误的地方,欢迎当我们开发时,为了提高用户的体验,常常要监测手机的网络状态,当手机处于无网状态时,我们会做一些相应的处理或者引导用户去打开网路,以下是我总结的一些经验,不足之处,还请谅解,如果有错误的地方,欢迎拍砖.(做了快两年的Android了,总觉得要做点什么,要不然感觉自己都在虚度了)
首先我们得自定义一个NetStateReceiver 继承extends BroadcastReceiver
public class NetStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { boolean isNet = NetworkUtil.isConnected(); if (isNet) { EventBus.getDefault().post(0, ConstantValue.Net_open); }else EventBus.getDefault().post(1, ConstantValue.Net_open); }} 这里我用的是org.simple.eventbus.EventBus 框架来更新事件,如果大家不熟悉可以使用广播,或者其他自己熟悉的方式:0代表现在网络是打开的,1代表没打开当然我们还得在配置文件里面单独注册:
当然这里还需注册网络操作权限:
当监测到没网时,我们可能需要引导用户去打开网络:
/* * 打开设置网络界面 * */ public static void setNetworkMethod(final Context context){ //提示对话框 AlertDialog.Builder builder=new AlertDialog.Builder(context); builder.setTitle("网络设置提示").setMessage("网络连接不可用,是否进行设置?").setPositiveButton("设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Intent intent=null; //判断手机系统的版本 即API大于10 就是3.0或以上版本 if(android.os.Build.VERSION.SDK_INT>10){ intent = new Intent(android.provider.Settings.ACTION_SETTINGS); }else{ intent=new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); // intent = new Intent(); // ComponentName compOnent= new ComponentName("com.android.settings","com.android.settings.WirelessSettings"); // intent.setComponent(component); // intent.setAction("android.intent.action.VIEW"); } context.startActivity(intent); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }).show(); }
当然一般我们打开一个activity的时候,可能首先会去监测是否有网:
本文共计1114个文字,预计阅读时间需要5分钟。
在开发过程中,为确保用户体验,常需监控手机网络状态。手机无网时,我们处理方式包括相应操作或引导用户开启网络。以下是我总结的一些经验:
当我们开发时,为了提高用户的体验,常常要监测手机的网络状态,当手机处于无网状态时,我们会做一些相应的处理或者引导用户去打开网路,以下是我总结的一些经验,不足之处,还请谅解,如果有错误的地方,欢迎当我们开发时,为了提高用户的体验,常常要监测手机的网络状态,当手机处于无网状态时,我们会做一些相应的处理或者引导用户去打开网路,以下是我总结的一些经验,不足之处,还请谅解,如果有错误的地方,欢迎拍砖.(做了快两年的Android了,总觉得要做点什么,要不然感觉自己都在虚度了)
首先我们得自定义一个NetStateReceiver 继承extends BroadcastReceiver
public class NetStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { boolean isNet = NetworkUtil.isConnected(); if (isNet) { EventBus.getDefault().post(0, ConstantValue.Net_open); }else EventBus.getDefault().post(1, ConstantValue.Net_open); }} 这里我用的是org.simple.eventbus.EventBus 框架来更新事件,如果大家不熟悉可以使用广播,或者其他自己熟悉的方式:0代表现在网络是打开的,1代表没打开当然我们还得在配置文件里面单独注册:
当然这里还需注册网络操作权限:
当监测到没网时,我们可能需要引导用户去打开网络:
/* * 打开设置网络界面 * */ public static void setNetworkMethod(final Context context){ //提示对话框 AlertDialog.Builder builder=new AlertDialog.Builder(context); builder.setTitle("网络设置提示").setMessage("网络连接不可用,是否进行设置?").setPositiveButton("设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Intent intent=null; //判断手机系统的版本 即API大于10 就是3.0或以上版本 if(android.os.Build.VERSION.SDK_INT>10){ intent = new Intent(android.provider.Settings.ACTION_SETTINGS); }else{ intent=new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); // intent = new Intent(); // ComponentName compOnent= new ComponentName("com.android.settings","com.android.settings.WirelessSettings"); // intent.setComponent(component); // intent.setAction("android.intent.action.VIEW"); } context.startActivity(intent); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }).show(); }
当然一般我们打开一个activity的时候,可能首先会去监测是否有网:

