Android网络判断知识小结
作者:mrr 时间:2022-06-01 02:39:16
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,网络,判断
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C# 获取本机IP地址(IPv4和IPv6)
2023-09-04 08:48:36
![](https://img.aspxhome.com/file/2023/4/111234_0s.jpg)
Spring如何将bean添加到容器中
2021-08-07 08:48:06
![](https://img.aspxhome.com/file/2023/7/108187_0s.jpg)
RabbitMQ交换机使用场景和消息可靠性总结分析
2023-10-06 14:00:55
在IDEA里gradle配置和使用的方法步骤
2023-11-23 16:07:58
![](https://img.aspxhome.com/file/2023/1/59851_0s.png)
Netty实现简易版的RPC框架过程详解
2023-05-23 23:19:58
![](https://img.aspxhome.com/file/2023/7/61537_0s.jpg)
Springboot整个Quartz实现动态定时任务的示例代码
2023-04-12 20:30:02
![](https://img.aspxhome.com/file/2023/9/78039_0s.png)
java动态代理(jdk与cglib)详细解析
2022-06-01 19:14:21
Springmvc加ajax实现上传文件并页面局部刷新
2023-07-31 09:26:47
![](https://img.aspxhome.com/file/2023/2/85512_0s.png)
WPF+DiffPlex实现文本比对工具
2022-04-20 21:32:07
![](https://img.aspxhome.com/file/2023/5/116535_0s.png)
解决Jenkins集成SonarQube遇到的报错问题
2023-11-24 08:54:10
![](https://img.aspxhome.com/file/2023/6/64396_0s.png)
浅谈抛出异常和捕获异常的一些区别
2023-10-19 15:25:24
Android5.0新控件实例详解
2022-12-06 21:58:18
![](https://img.aspxhome.com/file/2023/8/91048_0s.png)
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