`

network: Android 网络判断(wifi、3G与其他)

 
阅读更多

package mark.zeng;

import java.util.List;

import android.content.Context;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;

public class NetworkProber {

/**
* 网络是否可用
*
* @param activity
* @return
*/
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}

/**
* Gps是否打开
*
* @param context
* @return
*/
public static boolean isGpsEnabled(Context context) {
LocationManager locationManager = ((LocationManager) context
.getSystemService(Context.LOCATION_SERVICE));
List<String> accessibleProviders = locationManager.getProviders(true);
return accessibleProviders != null && accessibleProviders.size() > 0;
}

/**
* wifi是否打开
*/
public static boolean isWifiEnabled(Context context) {
ConnectivityManager mgrConn = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
TelephonyManager mgrTel = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
return ((mgrConn.getActiveNetworkInfo() != null && mgrConn
.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel
.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);
}

/**
* 判断当前网络是否是wifi网络
* if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) { //判断3G网
*
* @param context
* @return boolean
*/
public static boolean isWifi(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetInfo != null
&& activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
}
return false;
}

/**
* 判断当前网络是否是3G网络
*
* @param context
* @return boolean
*/
public static boolean is3G(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetInfo != null
&& activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return true;
}
return false;
}
}
另外还有两个方法判断网络是否可用:

public static boolean isNetworkAvailable_00(Context context) {
ConnectivityManager cm = ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE));
if (cm != null) {
NetworkInfo info = cm.getActiveNetworkInfo();
if (info != null && info.isConnectedOrConnecting()) {
return true;
}
}
return false;
}

public static boolean isNetworkAvailable_01(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo network = cm.getActiveNetworkInfo();
if (network != null) {
return network.isAvailable();
}
return false;
}
更加严谨的写法:
public static boolean checkNet(Context context) {

try {
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {

NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null && info.isConnected()) {

if (info.getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
} catch (Exception e) {
return false;
}
return false;
}

分享到:
评论
1 楼 libufengiam 2013-09-12  
很好很强大,报错不能用。

相关推荐

    Android 判断当前网络是否可用简单实例

    用户手机当前网络可用:WIFI、2G/3G网络,用户打开与不打开网络,和是否可以用是两码事。可以使用指的是:用户打开网络了并且可以连上互联网进行上网。 首页添加网络权限 &lt;uses android:name=android.permission....

    Android-Network:Android 网络库和框架分析和教程

    Android 网络库和框架分析和教程 网络基础 ####介绍 输入 url:后会发生什么 与服务器端 API 交互: 改造 ####介绍 改造文档; 改造原则:& &,还集成了OKHttp; 毕加索原理: & ; RESTful (GET/PUT/POST...

    Android-NetworkState一个轻量级的网络状态监听库方便实用

    Android即时网络监听库,只需几行代码就可得到当前网络状态为wifi还是GPRS或是网络连接还是网络断开,监听犹如EventBus那般优雅。

    Android TV (网络机顶盒)wifi设置

    Android 系统自带的Wi-Fi设置很稳定很完善,就是美观和易操作性欠佳,单独把这项常用的设置拿出来也是很有必要的。

    Android 判断网络状态,并且在没有网络的时候,打开网络设置对话框

    在使用Android连接网络的时候,...要判断网络状态,首先需要有相应的权限,下面为权限代码: 即允许访问网络状态: &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"&gt;   下面为判断代码:  

    Android10连接WiFi时遇到的问题

    存在的问题:在真机测试时,我的手机安卓9,在使用addNetwork()方法时功能是正常的,当换一个手机的时候(Android10)时发现连接WiFi的功能无法使用,在网上查阅资料,后发现安卓9和安卓10的连接WiFi的方法不一样...

    NetworkMonitor:Android 全局网络变化监听

    Android 全局网络变化监听 How to To get a Git project into your build: Step 1. Add the JitPack repository to your build file Add it in your root build.gradle at the end of repositories: allprojects { ...

    Android App切换网络模式(4G,3G,2G,飞行模式)

    Android App实现切换网络模式 4G网络 3G网络 2G网络 飞行模式

    Android代码-WIFI网络共享

    You also can change the network name (SSID) and set password for your portable network. App on play store: https://play.google.com/store/apps/details?id=info.hoang8f.autoap Usage Using Android Studio ...

    Android网络判断

    1.整合了android的网络判断过程封装 2.添加了应用库一句话获取当前网络的类型 3.备注: 返回值 -1:没有网络,0-数据流量,1:Wi-Fi 4.方法调用: NetWorkUtils.isMobileConnected(mContext);//判断MOBILE网络是否可用 ...

    Android29的网络状态获取工具,NetworkTools-master.zip

    兼容Android29以下获取网络连接及网络类型的工具。

    android network_provider

    这是在Eclipse环境下开发的android应用程序,主要是实现了在室内定位,获取所在地的经纬度信息

    单机搭建Android(解决Network is unreachable)

    单机搭建Android(解决 fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle fatal: error [Errno 101] Network is unreachable ),具体操作请阅readme.txt

    android_wifi 从java层到wifi.c

    android4.0 wifi子系统解析 。代码流程解析。 1.wifi子系统的初始化 wifi服务初始化和其他的服务差不多,也是通过SystemService来创建的。 &lt;framework/base/services/java/...

    Phonegap判断网络类型及状态

    cordova 3.4 版本的API 判断网络的连接状态 调用phonegap API 判断网络类型 :2G 3G 4G wifi 等等 博客: http://blog.csdn.net/aaawqqq/article/details/22220319

    判断网络是否WIFI,4G, 4G+

    提供判断网络是否可用,当前是否是wifi,4g或者4g+,如果不可用,并给出提示,调转到系统网络设置界面

    network:移动端网络连接判断

    移动端网络连接判断简介利用网络连接判断,如果是WIFI加载高清图片,非WIFI加载标清图片浏览器支持情况微信Android(自带浏览器、Chrome、QQ浏览器)这些网站正在使用

    android 6.0 连wifi有感叹号,提示已连接WiFi无法连接网络.doc

    diff --git a/services/core/java/com/android/server/connectivity/NetworkMonitor.java b/services/core/java/com/android/server/connectivity/NetworkMonitor.java index 35e80ca..06a07c2 100755 --- a/...

    Wroup:Android-WiFi Direct Library

    Wroup是WiFi P2P Android库,也称为WiFi Direct。 该库为官方的WiFi Direct API添加了一层,以简化此操作。 库的名称来自Wroup的加入组+ WiFi,因为该库的目的是创建WiFi P2P组,并允许连接的对等方之间进行通信。 ...

    Android中判断有无可用网络的代码(是否是3G或者WIFI网络)

    代码如下: ConnectivityManager mConnectivity = (ConnectivityManager)... //检查网络连接,如果无网络可用,就不需要进行连网操作等 NetworkInfo info = mConnectivity.getActiveNetworkInfo(); if (info == n

Global site tag (gtag.js) - Google Analytics