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控制闪光灯的方法(打开与关闭)

    Android控制闪光灯的方法(打开与关闭)

    这篇文章主要介绍了Android控制闪光灯的方法,可实现闪光灯打开与关闭的效果,涉及Android操作Camera拍照闪光灯的相关技巧,需要的朋友可以参考下
    2016-01-01
  • Android获取view高度的三种方式

    Android获取view高度的三种方式

    这篇文章主要为大家详细介绍了Android获取view高度的三种方式,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android实现悬浮按钮功能

    Android实现悬浮按钮功能

    在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(Floating Button),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍了如何在Android中实现悬浮按钮功能,需要的朋友可以参考下
    2025-04-04
  • Android绘制仪表盘指针刻度

    Android绘制仪表盘指针刻度

    这篇文章主要为大家详细介绍了Android绘制仪表盘指针刻度,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • Android 区别真机和模拟器的几种方法

    Android 区别真机和模拟器的几种方法

    本文主要介绍 Android 区别真机和模拟器,这里整理了几种方式来辨别 真机和模拟器.希望能对有需要的小伙伴有所帮助
    2016-07-07
  • Android开发必备知识 为什么说Kotlin值得一试

    Android开发必备知识 为什么说Kotlin值得一试

    为什么说值得一试,这篇文章主要为大家详细介绍了Android开发必备知识,Kotlin的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Android通用流行框架大全【整理】

    Android通用流行框架大全【整理】

    本文主要整理在相关功能上对应框架开发更快更高效的Android通用流行框架的集合,需要的朋友可以参考下
    2016-05-05
  • Android13实时刷新频率的实现代码(完整代码)

    Android13实时刷新频率的实现代码(完整代码)

    文章介绍了Android 13中如何通过设置开发者选项显示屏幕刷新频率,具体涉及到Settings应用中的代码和SurfaceFlinger服务的实现,感兴趣的朋友一起看看吧
    2025-01-01
  • Mac中配置gradle环境及使用android studio打包jar包与arr包的方法

    Mac中配置gradle环境及使用android studio打包jar包与arr包的方法

    这篇文章主要给大家介绍了关于在Mac中配置gradle环境,以及使用android studio打包jar包与arr包的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • Android仿QQ微信侧滑删除效果

    Android仿QQ微信侧滑删除效果

    这篇文章主要为大家详细介绍了Android仿QQ微信侧滑删除效果,自定义仿QQ侧滑删除,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12

最新评论