守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 3092|回复: 0
打印 上一主题 下一主题

[Android] 如何判断Android手机当前是否联网

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    52694
    钢镚
    1422

    开源英雄守望者

    跳转到指定楼层
    楼主
    发表于 2015-6-13 21:32:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    如果拟开发一个网络应用的程序,首先考虑是否接入网络,

    在Android手机中判断是否联网可以通过ConnectivityManager 类的isAvailable()方法判断,

    首先获取网络通讯类的实例

    ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); ,

    使用cwjManager.getActiveNetworkInfo().isAvailable(); 来返回是否有效,

    如果为True则表示当前Android手机已经联网,可能是WiFi或GPRS、HSDPA等等,

    具体的可以通过ConnectivityManager 类的getActiveNetworkInfo() 方法判断详细的接入方式,

    需要注意的是有关调用需要加入

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 这个权限,

    android开发网提醒大家在真机上Market和Browser程序都使用了这个方法,来判断是否继续,

    同时在一些网络超时的时候也可以检查下网络连接是否存在,以免浪费手机上的电力资源



    =========================================================================================================



    首先在AndroidManifest.xml中添加与连接网络相关的权限:

    1. <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    3. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    复制代码



    一、判断网络连接是否可用
    1. public static boolean isNetworkAvailable(Context context) {   
    2.         ConnectivityManager cm = (ConnectivityManager) context   
    3.                 .getSystemService(Context.CONNECTIVITY_SERVICE);   
    4.         if (cm == null) {   
    5.         } else {
    6.        //如果仅仅是用来判断网络连接
    7.         //则可以使用 cm.getActiveNetworkInfo().isAvailable();  
    8.             NetworkInfo[] info = cm.getAllNetworkInfo();   
    9.             if (info != null) {   
    10.                 for (int i = 0; i < info.length; i++) {   
    11.                     if (info[i].getState() == NetworkInfo.State.CONNECTED) {   
    12.                         return true;   
    13.                     }   
    14.                 }   
    复制代码


    二、判断GPS是否打开
    1. public static boolean isGpsEnabled(Context context) {   
    2.         LocationManager lm = ((LocationManager) context   
    3.                 .getSystemService(Context.LOCATION_SERVICE));   
    4.         List<String> accessibleProviders = lm.getProviders(true);   
    5.         return accessibleProviders != null && accessibleProviders.size() > 0;   
    6.     }
    复制代码


    三、判断WIFI是否打开

    1. public static boolean isWifiEnabled(Context context) {   
    2.         ConnectivityManager mgrConn = (ConnectivityManager) context   
    3.                 .getSystemService(Context.CONNECTIVITY_SERVICE);   
    4.         TelephonyManager mgrTel = (TelephonyManager) context   
    5.                 .getSystemService(Context.TELEPHONY_SERVICE);   
    6.         return ((mgrConn.getActiveNetworkInfo() != null && mgrConn   
    7.                 .getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel   
    8.                 .getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);   
    9.     }
    复制代码


    四、判断是否是3G网络
    1. public static boolean is3rd(Context context) {   
    2.         ConnectivityManager cm = (ConnectivityManager) context   
    3.                 .getSystemService(Context.CONNECTIVITY_SERVICE);   
    4.         NetworkInfo networkINfo = cm.getActiveNetworkInfo();   
    5.         if (networkINfo != null   
    6.                 && networkINfo.getType() == ConnectivityManager.TYPE_MOBILE) {   
    7.             return true;   
    8.         }   
    9.         return false;   
    10.     }  
    复制代码


    五、判断是wifi还是3g网络,用户的体现性在这里了,wifi就可以建议下载或者在线播放。
    1. public static boolean isWifi(Context context) {   
    2.             ConnectivityManager cm = (ConnectivityManager) context   
    3.                     .getSystemService(Context.CONNECTIVITY_SERVICE);   
    4.             NetworkInfo networkINfo = cm.getActiveNetworkInfo();   
    5.             if (networkINfo != null   
    6.                     && networkINfo.getType() == ConnectivityManager.TYPE_WIFI) {   
    7.                 return true;   
    8.             }   
    9.             return false;   
    10.         }
    复制代码



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
    收藏收藏 分享分享 支持支持 反对反对 微信
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2024-4-20 06:14 , Processed in 0.049039 second(s), 36 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表