说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面

HTML文档下载 WORD文档下载 PDF文档下载
检测网络连接状态也就成为Android网络应用程序所必备的功能,本文介绍如何检测网络连接状态并调用网络配置界面。

 

获取网络连接状态
随着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手机的当前网络状态

作者:mainroadlee

获取网络连接状态

随着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手机的网络配置界面
使用过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));//进入无线网络配置界面
如果调用
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网络设置界面
则直接进入手机中的wifi网络设置界面
在wifi网络连接后 运行该程序
我们可以看到 wi-fi 状态为已连接(CONNECTED).
本文来源:http://www.cnblogs.com/mainroadlee/archive/2011/01/11/Android_Network_State_Checking_And_Setting.html

 

 

“微信公众平台优秀开发商”征集评选活动正式启动 移动数据库新疆界:开源、Swift、可穿戴... Chromebook侵蚀微软商用PC市场,成绩喜人 2014微信开发者大会议程公布 8月1日前购票8折优惠并赠书 四火的唠叨:也谈谈全栈工程师 图形化与集成趋势 协同软件致远发新品V5.1 跨平台开发如何事半功倍 Xamarin推出免费培训 《近匠》上海庆科:海尔智能家居背后的云方案 轻松DIY智能硬件,开源电子原型平台Hippo-ADK 所见即所得!基于Polymer的设计工具Mobile UI Elements 好的产品经理是怎样炼成的? 统一架构、统一运维:UnitedStack发布UOS2.0 把轻应用带进汽车——宝马、百度编程马拉松大赛启动 “钢铁侠”Insteon的逆袭:声控智能家居新时代 游戏云纪元 第二届游戏运营技术论坛即将召开 Bitly:构建月处理60亿点击的分布式系统 重塑微软:Satya Nadella开启整合之路 推送工具个推完成B轮数千万美金融资 娱乐行业数据化 ABD爱梦娱乐发布大数据引擎产品 增强现实:10大AR应用窥探移动未来 LBS的硬件创新:高德LBS智能硬件编程马拉松圆满闭幕 2014优秀微信开发商评选上线 首批旅游汽车电商房产等行业应用出炉(表) 让梦想照进现实——宝马百度编程马拉松闭幕 IXDC大会:移动交互设计精髓——用户体验 想辨析“马航”等事件真伪,有很多技术和工具可以使用 两倍于IBM的基础设施投资,Google大力发展云服务 听云平台发布移动应用性能黑洞报告 微信开发者大会陶瑾:如何玩转微信支付功能的原理和开发 560亿PV+7.3亿用户,Reddit是如何做到的? 打造安全界的希波克拉底誓言文化 极客的春天来了! Mozilla COO宫力:老牌操作系统如何助力新一代智能电视 如何在formload时就确定TabControl1显示第3页?菜鸟提问 css的问题,如何使字体大一点??? 紧急求救 datagrid选中的颜色(我重新画了一个datagrid,设置颜色) 在access中如何控制查询 avg(某字段)的小数位数,比如要两位小数 如何起死回生 一道题目 做文件上传系统时,当上传较大容量的文件时如大于2M的文件时出差,请问是什么问题? 请教一个insert into select...语句的问题! 简单的问题,取出头n条记录的select语句怎么写? 谁可以介绍一下关于HMM(隐马可尔夫模型)方面的资料? 在windows2003下能上网,不能下载东西,为什么? strtolower 的问题 各位大侠谁知道,哪里能下到LEI或ESB? 在LotusScript中如何输出到控制台? 各位中秋节快乐! 怎样不通过post传输方式传输数据(肯定给分) eMvb中的image和picture控件怎么插入不了图片啊。。。。 有关路径问题 在jsp中的 文件是否存在file.exists()的监测和打开这个文件的疑惑 中秋节了,睡个好觉吧 怎样合并字符串? SQL SERVER 2000为什么安装不了! ■■■■■■十万火急。。公司里,急需给全体员工的一份中秋贺信,谁帮我找一分,拜托了! 關于數據庫系統表的說明和pb本身的自主創建的四個系統表的相關細節 关于App.path的丢失 如何动态设置cedit中可输入数据的长度呢 关于用c读取文件 我有一个内网,怎么使外网能访问内网的网页. 我靠,JBuilder 9怎么就那么那么那么那么那么那么那么那么慢啊??? 更那堪冷落 仲秋节!今宵酒醒何处?杨柳岸晓风员残月。 如何把纵向表转为横向表(只轉字段名)? 中秋节,祝你们都快乐,散技术分! 请问怎样一步步学.net阿?! 5xsoft upload组件的使用方法如何? 那位高手能告诉我怎么让option响应方向键(事件)? 急 我的Datawindow怎么不能编辑? 迫在眉睫! 有关fcanf()的疑问 98访问2000的问题,麻烦大家帮忙 关于sysgate的问题 急~~~做一个邮箱注册系统 怎样利用XML技术实现不同网络之间的数据交换?比如C/S模式下,服务器端用JAVA写的程序,客户段是用VB写的程序 如何实现两个异地SQL数据库同步? 真假取值问题? 凤凰卫视《周末大放送》民间保钓全记录 精彩下载(提者送分!!) 帮个忙 我想找个独立的DOM解释程序,集成到自己的程序里,大家帮忙!!!! 利用COM来实现混合编程所遇的问题 (高分)急!!!请高手帮忙!Delphi调用Visual Prolog的DLL碰到的Memory问题! 关于indy控件发smtp邮件的问题?请各位指点! Jude小组 forward-investment求高手翻译 求一篇关于环境保护的英语作文 100字左右 带翻译的 着急 我想了太多 用英语怎么翻译?这是一首歌的歌名 两个同样的直角三角形叠在一起,那么阴影部分的面积是多少平方厘米? 若cos(π/4+x)=3/5,17π/12<x <7π/4,求(sin2x+2cosx)/1-tanx的值 investment group是投资集团的意思,investment能否写成Lnvestment,就是第一个字母i能否换成l(大写是L)不是我脑子秀逗了,是我看见有个公司招牌是这么写的,要么就是那人脑子秀逗了,要么就是我英 为什么我被T出团队了 为什么我没子团队了? 求解释g(t)得出后为何能解出g(t') Investment Profits1.1% daily for 30 days Minimum spend is USD 1002.1.5% daily for 30 days Minimum spend is USD 10003.2% daily for 30 days Minimum spend is USD 10000All payments are made to your e-gold account after 30 Day.Minimum spend is US$100 and business investment这是我收的一封邮件,看不懂.希望高手帮我翻译一下.The Subject:BUSINESS INVESTMENTMy Name Is stellla I am an accountant with a bank here in Nigeria.There is a fixed deposit of 15,000,000.00 (Fifteen Million Pounds investing 和 investment 的区别investing 和 investment 好像都是投资的意思,就是不知道其中的区别. 酝酿八旬六连任 麦凯恩欲2016年竞希腊女童疑曾遭拐卖 美国夫妻认为是其俄国防部长23日将出席俄罗斯-北约理德媒称俄前首富霍多尔科夫斯基难获释 联合国难民署加紧向300万叙民众提供联合国称巴以局势动态令人忧虑 吁各方欧洲太空望远镜将发射 能预测行星是否澳大利亚总督布赖斯访问成都 与大熊猫韩外交部可容忍同时标记独岛和竹岛 议叙反对派将于下月初决定是否参加叙问题日本邀国际原子能机构查核污染 称邻国雅居乐问鼎7月西城大户销冠慈世平姐妹们,今夏一起游泳吧!自主品牌显身手 华泰汽车征战俄罗斯11岁女娃卖凉虾 一天可卖近30碗重庆市车管所第九分所落户江津双福走,赏莲去封顶价17万元买熙街步行街公寓新妈妈喂母乳 更利于恢复身材28名贫困大学生请你当他们的梦想伙伴新闻面对面碎虚无极逆世神功钧天昏天饮血狂刀战天下仙妖逆穿越之大明永历梦的重生生活阐教首徒晶清耀世丹圣憨大夫棋盘山旅游云窝旅游天游峰旅游万松书院旅游复旦大学旅游甜爱路旅游世纪公园旅游峨眉山大佛禅院旅游杜鹃湖旅游石塘林旅游大峡谷旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘