文章目录
可以使用ConnectivityManager类来检查网络连接状态,如果返回值为CONNECTED_WIFI或CONNECTED_MOBILE则表示网络已连接。
在Android中,检查网络是否可用可以通过以下几种方法实现:
1、使用ConnectivityManager类
2、使用NetworkInfo类
3、使用InetAddress类
4、使用Ping命令
下面分别介绍这四种方法的实现步骤和示例代码。
使用ConnectivityManager类
步骤:
1、获取ConnectivityManager实例
2、获取NetworkInfo对象
3、判断网络是否可用
示例代码:
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class NetworkUtil { public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); return networkInfo != null && networkInfo.isConnected(); } }
使用NetworkInfo类
步骤:
1、获取ConnectivityManager实例
2、获取NetworkInfo对象
3、判断网络是否可用
示例代码:
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class NetworkUtil { public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); return networkInfo != null && networkInfo.isConnected(); } }
使用InetAddress类
步骤:
1、尝试解析一个网址的IP地址
2、判断解析结果是否为空,如果为空则表示网络不可用,否则表示网络可用
示例代码:
import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import android.content.Context; import android.util.Log; public class NetworkUtil { public static boolean isNetworkAvailable(Context context) { try { InetAddress address = InetAddress.getByName("www.baidu.com"); // 尝试解析百度首页的IP地址 return !address.equals(""); // 如果解析结果不为空,则表示网络可用,否则表示网络不可用 } catch (UnknownHostException e) { e.printStackTrace(); return false; // 如果发生异常,则表示网络不可用 } catch (IOException e) { e.printStackTrace(); return false; // 如果发生异常,则表示网络不可用 } } }
使用Ping命令(仅适用于API 23及以上版本)
步骤:
1、创建一个PingTask任务类,继承自AsyncTask类,并重写doInBackground方法,用于执行Ping命令并返回结果,注意,需要在AndroidManifest.xml文件中添加INTERNET权限。
2、在需要检查网络的地方,创建PingTask实例并调用execute方法执行任务,根据doInBackground方法的返回值判断网络是否可用。