Android编程 获取网络连接状态 及调用网络配置界面

摘要:
获取网络连接状态随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源。检测网络连接状态已成为网络应用的一项基本功能。Android平台提供了ConnectivityManager类,用于检测网络连接状态。Android开发文档描述了Connectivity Manager的作用如下:类,用于回答有关网络状态的查询

获取网络连接状态

随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能。

Android平台提供了ConnectivityManager 类,用于网络连接状态的检测。

Android开发文档这样描述ConnectivityManager的作用:

Class that answers queries about the state of network connectivity. It also notifies applications when network connectivity changes. Get an instance of this class by callingContext.getSystemService(Context.CONNECTIVITY_SERVICE).

The primary responsibilities of this class are to:

Monitor network connections (Wi-Fi, GPRS, UMTS, etc.) Send broadcast intents when network connectivity changes Attempt to "fail over" to another network when connectivity to a network is lost

Provide an API that allows applications to query the coarse-grained or fine-grained state of the available networks

下面这个简单的例子 checkNetworkInfo() 说明了如何编程获取Android手机的当前网络状态

private void checkNetworkInfo() {

ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

// mobile 3G Data Network

State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)

.getState();

txt3G.setText(mobile.toString()); // 显示3G网络连接状态

// wifi

State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI)

.getState();

txtWifi.setText(wifi.toString()); // 显示wifi连接状态

}

注:

根 据Android的安全机制,在使用ConnectivityManager时,必须在AndroidManifest.xml中添加<uses- permission android:name="android.permission.ACCESS_NETWORK_STATE" />否则无法获得系统的许可。

运行结果(关闭3G及wifi网络连接的状态下)

Android编程 获取网络连接状态 及调用网络配置界面第1张

调用Android手机的网络配置界面

使用过Android手机上的手机QQ的朋友,应该知道,当QQ启动时,如果没有有效的网络连接,QQ会提示转入手机的网络配置界面。这是如何实现的呢。其实很简单啦

private void checkNetworkInfo() {

ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

// mobile 3G Data Network

State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)

.getState();

txt3G.setText(mobile.toString());

// wifi

State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI)

.getState();

txtWifi.setText(wifi.toString());

// 如果3G网络和wifi网络都未连接,且不是处于正在连接状态 则进入Network Setting界面 由用户配置网络连接

if (mobile == State.CONNECTED || mobile == State.CONNECTING)

return;

if (wifi == State.CONNECTED || wifi == State.CONNECTING)

return;

startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));// 进入无线网络配置界面

// startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));

// //进入手机中的wifi网络设置界面

}

运行结果(关闭3G及wifi网络连接的状态下),程序转入无线网络配置界面

startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); //进入无线网络配置界面

Android编程 获取网络连接状态 及调用网络配置界面第2张

如果调用

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网络设置界面

则直接进入手机中的wifi网络设置界面

Android编程 获取网络连接状态 及调用网络配置界面第3张

在wifi网络连接后 运行该程序

Android编程 获取网络连接状态 及调用网络配置界面第4张

我们可以看到 wi-fi 状态为已连接(CONNECTED).

免责声明:文章转载自《Android编程 获取网络连接状态 及调用网络配置界面》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Select语句也会引起死锁CocosCreator 微信小游戏:文件编译后项目内的 js/json/wxml/wxss 文件路径在真机上可能无法读取下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python线程指南(转)

1. 线程基础 1.1. 线程状态 线程有5种状态,状态转换的过程如下图所示: 1.2. 线程同步(锁) 多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)。但是当线程需要共享数据时,可能存在数据不同步的问题。考虑这样一种情况:一个列表里所有元素都是0,线程"set"从后向前把所有元素改成1,而线程"print"负责从前往后读取列表并打印。那么,...

Oracle DBA 必须掌握的 查询脚本:

Oracle  DBA 必须掌握的 查询脚本: 0:启动与关闭                        orcle 数据库的启动与关闭 1:连接数据库   2:数据库开启状态的实现步骤:       2-1:启动数据库           2-1-1正常启动数据库: SQL> startup                       特点:...

charles——OpenSSL——安卓7.0以上https抓包

参考1:https://blog.csdn.net/djzhao627/article/details/102812783?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=di...

Android 5.0以上Material Design 沉浸式状态栏

偶然在知乎上看到这个问题,Android 5.0 如何实现将布局的内容延伸到状态栏,之前也见过多个应用的这个功能,但是知乎上的答案却没有一个真正实现此功能的一类是把标题栏设置App主题颜色,一类是提取App主题颜色然后设置成状态栏的颜色,这两种方法都只是设置了状态栏的背景色,而没有实现布局延伸到状态栏这个功能 下面是综合网上的一些东西整理的,废话不说,看...

路由协议之OSPF

目录 OSPF协议 OSPF的七种状态 OSPF的11种LSA Stub和Nssa OSPF中的防环机制 OSPF中的路由汇总和路由过滤 OSPF中的虚拟链路 虚拟链路有两种存在的意义 OSPF中的认证 华为模拟器中的配置 OSPF协议OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议IGP,用于在单一自治系...

强化学习(Reinforcement Learning)中的Q-Learning、DQN,面试看这篇就够了!

1. 什么是强化学习 其他许多机器学习算法中学习器都是学得怎样做,而强化学习(Reinforcement Learning, RL)是在尝试的过程中学习到在特定的情境下选择哪种行动可以得到最大的回报。在很多场景中,当前的行动不仅会影响当前的rewards,还会影响之后的状态和一系列的rewards。RL最重要的3个特定在于: 基本是以一种闭环的形式; 不...