如何设置wifi和移动数据wifi网络覆盖之间自动切换

&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
android实现wifi与移动数据的切换
摘要:在网上搜索开启wifi后自动关闭移动数据,但搜到的都是如何打开关闭wifi/3g,如何监听wifi/3g的状态,没有完整的。于是自己整了一天,终于搞定了。首先在服务中注册动态广播,在OnReceive方法中,获得网络连接服务,然后创建NetworkInfo对象获得网络连接类型,用Boolean类型的isWifiConnected做判断。当wifi在一定时间内没有连上,就关闭wifi并打开3g网,当wifi连上了就关闭3g网。mReceiver=newBroadcastRece
在网上搜索开启wifi后自动关闭移动数据,但搜到的都是如何打开关闭wifi/3g,如何监听wifi/3g的状态,没有完整的。于是自己整了一天,终于搞定了。
首先在服务中注册动态广播,在OnReceive方法中,获得网络连接服务,然后创建NetworkInfo对象获得网络连接类型,用Boolean类型的isWifiConnected做判断。当wifi在一定时间内没有连上,就关闭wifi并打开3g网,当wifi连上了就关闭3g网。
mReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {boolean isWifiConnected =boolean isMobileConnected =ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);isWifiConnected = networkInfo.isConnected();//判断wifi是否开启if (isWifiConnected) {Toast.makeText(context, &wifi is on&, 0).show();Log.i(&NetLisService&, &wifi is &+isWifiConnected);
//wifi连接上就关闭3g网NetLisService.this.setMobileDataStatus(NetLisService.this,false);}else{Toast.makeText(context, &wifi is off&, 0).show();Log.i(&NetLisService&, &wifi is &+isWifiConnected);new Thread(){public void run() {try {//当wifi断开十秒没连接上就关闭wifiThread.sleep(10000);WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);//关闭wifiwifiManager.setWifiEnabled(false);//开启3gNetLisService.this.setMobileDataStatus(NetLisService.this,true);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}};}.start();}
//网络连接改为3g模式networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);isMobileConnected = networkInfo.isConnected();//判断3g是否开启if (isMobileConnected) {Toast.makeText(context, &3g is on&, 0).show();Log.i(&NetLisService&, &3g is &+isMobileConnected);}else{Toast.makeText(context, &3g is off&, 0).show();Log.i(&NetLisService&, &3g is &+isMobileConnected);}}};IntentFilter filter = new IntentFilter();
//添加过滤actionfilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(mReceiver, filter);
这是网上扒下来的开关移动数据的方法
public void setMobileDataStatus(Context context , boolean enabled) {ConnectivityManager conMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);// ConnectivityManager类Class&?& conMgrClass =// ConnectivityManager类中的字段Field iConMgrField =// IConnectivityManager类的引用Object iConMgr =// IConnectivityManager类Class&?& iConMgrClass =// setMobileDataEnabled方法Method setMobileDataEnabledMethod =try {// 取得ConnectivityManager类conMgrClass = Class.forName(conMgr.getClass().getName());// 取得ConnectivityManager类中的对象MserviceiConMgrField = conMgrClass.getDeclaredField(&mService&);// 设置mService可访问iConMgrField.setAccessible(true);// 取得mService的实例化类IConnectivityManageriConMgr = iConMgrField.get(conMgr);// 取得IConnectivityManager类iConMgrClass = Class.forName(iConMgr.getClass().getName());// 取得IConnectivityManager类中的setMobileDataEnabled(boolean)方法setMobileDataEnabledMethod = iConMgrClass.getDeclaredMethod(&setMobileDataEnabled&, Boolean.TYPE);// 设置setMobileDataEnabled方法是否可访问setMobileDataEnabledMethod.setAccessible(true);// 调用setMobileDataEnabled方法setMobileDataEnabledMethod.invoke(iConMgr, enabled);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}
原文地址:http://blog.csdn.net/beautiful_life12/article/details/
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
为您提供0门槛上云实践机会
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
android实现wifi与移动数据的切换相关信息,包括
的信息,所有android实现wifi与移动数据的切换相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International帖子很冷清,卤煮很失落!求安慰
手机签到经验翻倍!快来扫一扫!
iphone如何设置断开WIFI的时候自动连接数据
2499浏览 / 9回复
如何设置断开WIFI的时候自动连接数据 ,断开数据的时候,自动连接WIFI。
打开蜂窝数据有WiFi时WiFi优先断开WiFi自动数据
谢谢分享[img]http://t.aiibii.com/yhdx.jpg[/img][img]http://t.aiibii.com/jumei.jpg[/img][img]http://t.aiibii.com/vip.jpg[/img][img]http://t.aiibii.com/1mt.jpg[/img][img]http://t.aiibii.com/fnctrip.jpg[/img][img]http://t.aiibii.com/dianping.jpg[/img][img]http://t.aiibii.com/yixun.jpg[/img][img]http://t.aiibii.com//happigo.jpg[/img][img]http://t.aiibii.com/1gm.jpg[/img][img]http://t.aiibii.com/sigo.jpg[/img][img]http://t.aiibii.com//aidai.jpg[/img]
可能感兴趣的板块:
用户名/注册邮箱/注册手机号
其他第三方号登录用WIFi时要关闭移动网络吗 用WIFi时会产生数据流量吗【详解】
  当无线WiFi跟移动数据同时开启的时候,智能手机会面临优先选择的问题,在有无线WiFi连接的时候会优先运用无线WiFi信号来接收收据上网。 用WIFi时需不需要关闭移动网络 ?  但需要注意的问题是,如果我们所连接的无线WiFi信号弱或不稳定容易中断的话,手机就会自动切换开启移动数据,自动切换到2G/3G/4G网络而继续提供上网服务功能。一般来说现在智能手机的节能理念,在锁屏后系统进入休眠会自动切断无线WiFi链接,那手机是设置了无无线WiFi自动切换到移动数据的话,那自然是会产生数据流量的。  现在的APP多数都有自动推送消息的权限或者是一些恶意的APP会自动获得系统权限来下载安装推广类的软件,当移动数据开启了,会给它们创造了&条件&。即使手机不在你手上也没人在运用,在有网络连接的基础上就会产生我们所说的流量偷跑了。  比如我这里是华为手机,在&休眠状态下保持WLAN连接&设置中我选择的是&仅充电时&,因为平时流量也比较多就没有设置始终了,毕竟始终连接无线WiFi是让电量消耗加快的。当然了设置&从不&会让数据流量增加的了,因为休眠后断开无线WiFi系统默认会自动启动移动数据!我们可以根据自身的需要而去设置。  在断开无线WiFi后我们可以选择设置提示是否运用移动数据,如果是土豪请直接选择自动运用移动数据连接吧。而断开不适用移动数据连接的话肯定是能克制流量耗用了,不过缺点是无法及时接收到诸如微信呀好友发来的消息。  在这里我的建议是,如果平时流量比较充裕的情况下是可以保持开启移动数据的,因为很多时候我们有必要及时收发信息。当有无线WiFi连接的时候会自动优先选择无线WiFi的。至于无线WiFi不稳定的情况是存在,不过现在的无线WiFi质量都是比较好的了。可以不必担心会耗费非常多的手机流量。&
最新更新栏目
您可能喜欢
大家都在搜

我要回帖

更多关于 移动wifi解决方案 的文章

 

随机推荐