Android网络判断知识小结

 更新时间:2015年12月21日 11:00:15   投稿:mrr  
本文通过两段实例代码分别给大家介绍Android中判断当前网络是否可用和Android 关于判断应用是否有网络的相关知识,对android网络判断相关知识感兴趣的朋友一起学习吧

Android中判断当前网络是否可用

应用场景:实现判断当前网络是否可用

当前有可用网络,如下图:

当前没有可用网络,如下图:

实现步骤:

1、获取ConnectivityManager对象

Context context = activity.getApplicationContext();
// 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

2、获取NetworkInfo对象

// 获取NetworkInfo对象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();

3、判断当前网络状态是否为连接状态

if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
{
   return true;
}

4、在AndroidManifest.xml中添加访问当前网络状态权限

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

代码如下:

public class ClassTestDemoActivity extends Activity
{
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    if (isNetworkAvailable(ClassTestDemoActivity.this))
    {
      Toast.makeText(getApplicationContext(), "当前有可用网络!", Toast.LENGTH_LONG).show();
    }
    else
    {
      Toast.makeText(getApplicationContext(), "当前没有可用网络!", Toast.LENGTH_LONG).show();
    }
  }
  /**
   * 检查当前网络是否可用
   * 
   * @param context
   * @return
   */
  public boolean isNetworkAvailable(Activity activity)
  {
    Context context = activity.getApplicationContext();
    // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivityManager == null)
    {
      return false;
    }
    else
    {
      // 获取NetworkInfo对象
      NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
      if (networkInfo != null && networkInfo.length > 0)
      {
        for (int i = 0; i < networkInfo.length; i++)
        {
          System.out.println(i + "===状态===" + networkInfo[i].getState());
          System.out.println(i + "===类型===" + networkInfo[i].getTypeName());
          // 判断当前网络状态是否为连接状态
          if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
          {
            return true;
          }
        }
      }
    }
    return false;
  }
}

 控制台打印出的结果:

Android 关于判断应用是否有网络

在Android编程中不少有许多应用需要判断是否有网络的问题,现在我就来说说关于网络的问题吧,源码如下:

.java

 /**
   * 检查当前网络是否可用
   * 
   * @param context
   * @return
   */
  public boolean isNetworkAvailable(Activity activity)
  {
    Context context = activity.getApplicationContext();
    // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivityManager == null)
    {
      return false;
    }
    else
    {
      // 获取NetworkInfo对象
      NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
      if (networkInfo != null && networkInfo.length > 0)
      {
        for (int i = 0; i < networkInfo.length; i++)
        {
          System.out.println(i + "===状态===" + networkInfo[i].getState());
          System.out.println(i + "===类型===" + networkInfo[i].getTypeName());
          // 判断当前网络状态是否为连接状态
          if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
          {
            return true;
          }
        }
      }
    }
    return false;
  }

在oncreate()方法中判断这个方法,具体代码如下:

.java

@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);
    if(isNetworkAvailable(Maintivity.this){
 Toast.makeText(this, "当前有可用网络!", Toast.LENGTH_LONG).show();
 }else{
 Toast.makeText(this,"当前没有网络!",Toast.LENGTH_LONG).show();}
 }

 另外,还需要添加权限

<!-- 允许应用可以联网 -->
  <uses-permission android:name="android.permission.INTERNET" />
   <!--允许应用检查网络状况 -->
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

相关文章

  • Android Studio 中的Gradle构建系统示例

    Android Studio 中的Gradle构建系统示例

    这篇文章主要介绍了Android Studio 中的Gradle构建系统示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Android自定义View实现数字雨效果的全过程

    Android自定义View实现数字雨效果的全过程

    小时候看时印象最深的就是数字雨了,导致我现在写代码也要是黑屏,下面这篇文章主要给大家介绍了关于Android自定义View实现数字雨效果的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • Android百度地图之方向感应和模式更改

    Android百度地图之方向感应和模式更改

    这篇文章主要为大家详细介绍了Android百度地图之方向感应和模式更改,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Android优化应用启动速度

    Android优化应用启动速度

    这篇文章主要介绍了Android优化应用启动速度,针对Android性能优化中的加快应用启动速度进行学习,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 深入理解Android MD5数据加密

    深入理解Android MD5数据加密

    在Android中需要对各种数据进行加密的操作,比如用户短信备份的数据加密、用户账户登陆的密码加密以及应用于服务器连接传递重要数据的加密,用处非常的多,所以今天来总结一下MD5加密算法。
    2016-09-09
  • Android APT 实现控件注入框架SqInject的示例

    Android APT 实现控件注入框架SqInject的示例

    这篇文章主要介绍了Android APT 实现控件注入框架SqInject的示例,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-03-03
  • Android控件系列之RadioButton与RadioGroup使用方法

    Android控件系列之RadioButton与RadioGroup使用方法

    本文介绍了Android中如何使用RadioGroup和RadioButton,对比了RadioButton和CheckBox的区别,并实现了自定义的RadioGroup中被选中RadioButton的变更监听事件
    2012-11-11
  • Android Touch事件分发过程详解

    Android Touch事件分发过程详解

    这篇文章主要介绍了Android Touch事件分发过程,详细描述了Android Touch事件的主要处理流程,有助于深入理解Android程序设计,需要的朋友可以参考下
    2014-09-09
  • 详解Android6.0运行时权限管理

    详解Android6.0运行时权限管理

    自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifest设置就可以任意获取权限,而是更加的注重用户的隐私和体验。本文详细介绍了Android6.0运行时权限管理。需要的朋友一起来看下吧
    2016-12-12
  • 新浪微博第三方登录界面上下拉伸图片之第三方开源PullToZoomListViewEx(一)

    新浪微博第三方登录界面上下拉伸图片之第三方开源PullToZoomListViewEx(一)

    PullZoomView要实现两类,一类是典型的Android ListView,另外一类是Android 的scroll view。本文先介绍PullZoomView在ListView上的实现:PullToZoomListViewEx
    2015-12-12

最新评论