[Android]判断网络连接是否可用

简介:
	/**
	 * 判断移动网络是否开启
	 * 
	 * @param context
	 * @return
	 */
	public static boolean isNetEnabled(Context context) {
		TelephonyManager tm = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
		if (tm != null) {
			if (tm.getNetworkType() != TelephonyManager.NETWORK_TYPE_UNKNOWN) {
				Log.i("sjf", "移动网络已经开启");
				return true;
			}
		}
		Log.i("sjf", "移动网络还未开启");
		return false;
	}

	/**
	 * 判断WIFI网络是否开启
	 * 
	 * @param context
	 * @return
	 */
	public static boolean isWifiEnabled(Context context) {
		WifiManager wm = (WifiManager) context
				.getSystemService(Context.WIFI_SERVICE);
		if (wm != null && wm.isWifiEnabled()) {
			Log.i("sjf", "Wifi网络已经开启");
			return true;
		}
		Log.i("sjf", "Wifi网络还未开启");
		return false;
	}

	/**
	 * 判断移动网络是否连接成功
	 * 
	 * @param context
	 * @return
	 */
	public static boolean isNetContected(Context context) {
		ConnectivityManager cm = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo info = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
		if (cm != null && info != null && info.isConnected()) {
			Log.i("sjf", "移动网络连接成功");
			return true;
		}
		Log.i("sjf", "移动网络连接失败");
		return false;
	}

	/**
	 * 判断WIFI是否连接成功
	 * 
	 * @param context
	 * @return
	 */
	public static boolean isWifiContected(Context context) {
		ConnectivityManager cm = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo info = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
		if (info != null && info.isConnected()) {
			Log.i("sjf", "Wifi网络连接成功");
			return true;
		}
		Log.i("sjf", "Wifi网络连接失败");
		return false;
	}

	/**
	 * 判断移动网络和WIFI是否开启
	 * 
	 * @param context
	 * @return
	 */
	public static boolean isNetWorkEnabled(Context context) {
		return (isNetEnabled(context) || isWifiEnabled(context));
	}

	/**
	 * 判断移动网络和WIFI是否连接成功
	 * @param context
	 * @return
	 */
	public static boolean isNetworkConnected(Context context) {
		return (isWifiContected(context) || isNetContected(context));
	}

操作Wifi需要AndroidManifest.xml在进行一些配置:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>  
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

WIFI 的主要操作权限有四个: 
 CHANGE_NETWORK_STATE :允许修改网络状态的权限。 
 CHANGE_WIFI_STATE :允许修改 WIFI 状态的权限。 
 ACCESS_NETWORK_STATE :允许访问网络状态的权限。 
 ACCESS_WIFI_STATE :允许访问 WIFI 状态的权限。




目录
相关文章
|
2月前
|
数据库 Android开发 开发者
构建高效Android应用:采用Kotlin协程优化网络请求处理
【2月更文挑战第30天】 在移动应用开发领域,网络请求的处理是影响用户体验的关键环节。针对Android平台,利用Kotlin协程能够极大提升异步任务处理的效率和简洁性。本文将探讨如何通过Kotlin协程优化Android应用中的网络请求处理流程,包括协程的基本概念、网络请求的异步执行以及错误处理等方面,旨在帮助开发者构建更加流畅和响应迅速的Android应用。
|
4月前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
41 0
|
4月前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
22 0
|
1月前
|
编解码 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)1
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
62 1
|
5天前
|
Java Linux API
统计android设备的网络数据使用量
统计android设备的网络数据使用量
14 0
|
1月前
|
编解码 开发工具 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
37 2
|
2天前
|
Android开发
Android网络访问超时
Android网络访问超时
10 2
|
2天前
|
Android开发
android检测网络连接是否存在(一)
android检测网络连接是否存在(一)
|
18天前
|
移动开发 Java Android开发
构建高效Android应用:采用Kotlin协程优化网络请求
【4月更文挑战第24天】 在移动开发领域,尤其是对于Android平台而言,网络请求是一个不可或缺的功能。然而,随着用户对应用响应速度和稳定性要求的不断提高,传统的异步处理方式如回调地狱和RxJava已逐渐显示出局限性。本文将探讨如何利用Kotlin协程来简化异步代码,提升网络请求的效率和可读性。我们将深入分析协程的原理,并通过一个实际案例展示如何在Android应用中集成和优化网络请求。
|
19天前
|
存储 应用服务中间件 网络安全
Android 网络链接稳定性测试解决方案
Android 网络链接稳定性测试解决方案
20 0