Android中Wifi/3G网络连接

获取网络连接状态

随着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 calling

Context.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网络设置界面
    }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, wifi
, 网络
, 连接wifi
, android wifi
, android网络
, mobile
, 状态
, android网络通讯
, android connect
, ConnectivityManager
, Android获取WIFI服务
Android获取WiFi
android wifi连接、android 连接指定wifi、android wifi自动连接、android wifi连接状态、android连接wifi代码,以便于您获取更多的相关知识。

时间: 2024-10-31 15:15:54

Android中Wifi/3G网络连接的相关文章

在 android 中如何获得网络强度

问题描述 在 android 中如何获得网络强度 我想在手机上面显示网络的网络信号强度. 现在我可以通过下面的代码检查出是否连接到wifi,但是接下来我想要知道网络信号强度.还需要添加什么代码? ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = con

Android中ImageView使用网络图片资源的方法_Android

本文实例讲述了Android中ImageView使用网络图片资源的方法.分享给大家供大家参考.具体如下: 很多时候我们不想把东西都放在APK里面,或者是不能放进去,这时候我们就需要万能的网路帮助自己实现了 运行效果截图如下: java代码如下: package com.android.antking.imageview; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.Malformed

Android中ImageView使用网络图片资源的方法

本文实例讲述了Android中ImageView使用网络图片资源的方法.分享给大家供大家参考.具体如下: 很多时候我们不想把东西都放在APK里面,或者是不能放进去,这时候我们就需要万能的网路帮助自己实现了 运行效果截图如下: java代码如下: package com.android.antking.imageview; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.Malformed

ubuntu-Ubuntu软件更新过程中系统提示网络连接失败

问题描述 Ubuntu软件更新过程中系统提示网络连接失败 更新的时候总是提示网络连接有问题,而我的网络连接是没有问题的,可以浏览各种网页,就是更新不了软件包 解决方案 需要更新源地址.默认安装的源地址为国外的,受国内网络影响,有时候连接不上,建议换成163的.修改可以参考这个连接,http://wiki.ubuntu.org.cn/%E6%BA%90%E5%88%97%E8%A1%A8,我就是这么改的. 解决方案二: Ubuntu系统中网络连接图标不见了怎么办? 解决方案三: 没有遇到过,不过你

在开发 ppc 程序中 如何 获得网络 连接的列表(例如列出 CMWAP,CMNET 等 ), 选择用那个连接, 如何用代码控制选中的连接 进行拨号 ?

问题描述 在开发ppc程序中如何获得网络连接的列表(例如列出CMWAP,CMNET等),选择用那个连接,如何用代码控制选中的连接进行拨号?.netcf1.0或.netcf2.0能实现吗?还是用api实现???最好有详细的代码,谢谢 解决方案 解决方案二:顶解决方案三:dd解决方案四:ddd

【Android】Android中WIFI开发总结(一)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://smallwoniu.blog.51cto.com/3911954/1334951        WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为"热点".      在Android中对Wifi操作,android本身提供了

【Android】Android中WIFI开发总结(二)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://smallwoniu.blog.51cto.com/3911954/1338618 今天就剖析一个WIFI搜索.创建.关闭.连接及一些简单的动画的综合案例. 首先,我们还是看一下我们项目的框架 MainActivity类:(处理wifi消息,加载UI) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2

Android中wifi与数据流量的切换监听详解

最近在做一个wifi和移动数据的监控功能,来来回回折腾了一阵子,这个模块的主要功能是监听整个APP的wifi与数据流量的切换,让用户使用专用流量,而不是用wifi,给一个弹窗,点击确认,自动切换数据流量,关闭wifi.我的思路是写一个静态广播,监听在广播里面进行监听,启用系统弹窗,点击确认,自动切换网络,这里面有一个坑就是弹窗会在广播中多次被调用,其实只调用了一次,但是实际上多次调用系统的弹窗会一个叠加一个,搞了好久,终于搞好了,原来是系统广播导致的叠加,详情看代码: 网络封装类Connecti

如何删除Win8中无用的网络连接

  在使用Windows 8的过程中,有时会重复添加网络连接,虽然不影响正常使用,但是一长串无用的连接看起来很不顺眼.另外,一些默认的网络名称(如"网络 2"),既不直观也不好听.但是这些连接,是无法直接删除和改名的,我们只能借助注册表来完成. 单击系统托盘区的网络图标,在可用网络列表下查看当前正在使用的网络连接,例如zjggmxx-jwc2.然后按Win+R键调出运行对话框,输入regedit并按回车键,打开注册表编辑器,依次跳转到HKEY_LOCAL_MACHINESOFTWARE