Android网络判断知识小结

作者:mrr 时间:2022-06-01 02:39:16 

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 关于判断应用是否有网络

在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,网络,判断
0
投稿

猜你喜欢

  • C# 获取本机IP地址(IPv4和IPv6)

    2023-09-04 08:48:36
  • Spring如何将bean添加到容器中

    2021-08-07 08:48:06
  • RabbitMQ交换机使用场景和消息可靠性总结分析

    2023-10-06 14:00:55
  • 在IDEA里gradle配置和使用的方法步骤

    2023-11-23 16:07:58
  • Netty实现简易版的RPC框架过程详解

    2023-05-23 23:19:58
  • Springboot整个Quartz实现动态定时任务的示例代码

    2023-04-12 20:30:02
  • java动态代理(jdk与cglib)详细解析

    2022-06-01 19:14:21
  • Springmvc加ajax实现上传文件并页面局部刷新

    2023-07-31 09:26:47
  • WPF+DiffPlex实现文本比对工具

    2022-04-20 21:32:07
  • 解决Jenkins集成SonarQube遇到的报错问题

    2023-11-24 08:54:10
  • 浅谈抛出异常和捕获异常的一些区别

    2023-10-19 15:25:24
  • Android5.0新控件实例详解

    2022-12-06 21:58:18
  • mybatis 多表关联mapper文件写法操作

    2021-12-02 23:21:25
  • Java中的几种读取properties配置文件的方式

    2022-09-06 13:36:19
  • Java中两个List之间的比较方法(差集、交集和并集)

    2023-03-06 06:34:42
  • Java加载property文件配置过程解析

    2023-10-07 07:53:03
  • 使用工具类-java精确到小数点后6位

    2021-06-24 20:45:39
  • Springboot 整合shiro实现权限控制的方法

    2021-09-21 20:15:47
  • C#的回调机制浅析

    2022-04-06 19:10:32
  • Android学习笔记--使用剪切板在Activity中传值示例代码

    2022-12-21 13:43:58
  • asp之家 软件编程 m.aspxhome.com