如何使用Android实现WIFI和GPRS网络的切换

小编给大家分享一下如何使用Android实现WIFI和GPRS网络的切换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联公司2013年成立,是专业互联网技术服务公司,拥有项目网站设计、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元昭阳做网站,已为上家服务,为昭阳各地企业和个人服务,联系电话:18982081108

在项目的开发中因为要使用到WIFI和GPRS网络的切换,因此就研究了一下通过代码打开WIFI和GPRS的工作。

无论是切换WIFI还是切换GPRS网络都需要设置相应的权限,所以需要在AndroidManifest.xml文件中加入以下几行代码。




1、切换WIFI网络

public static void toggleWiFi(Context context, boolean enabled) {
 WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
 wm.setWifiEnabled(enabled);
 }

2、切换GPRS网络

由于Android没有提供直接切换GPRS网络的方法,通过查看系统源码发现,系统是调用IConnectivityManager类中的setMobileDataEnabled(boolean)方法来设置GPRS网络的,由于方法不可见,只能采用反射来调用,代码如下。

public static void toggleMobileData(Context context, boolean enabled) {
 ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
 
 Class conMgrClass = null; // ConnectivityManager类
 Field conMgrField = null; // ConnectivityManager类中的字段
 Object iConMgr = null; // IConnectivityManager类的引用
 Class iConMgrClass = null; // IConnectivityManager类
 Method setMobileDataEnabledMethod = null; // setMobileDataEnabled方法
 
 try {
 // 取得ConnectivityManager类
 conMgrClass = Class.forName(conMgr.getClass().getName());
 // 取得ConnectivityManager类中的对象mService
 conMgrField = conMgrClass.getDeclaredField("mService");
 // 设置mService可访问
 conMgrField.setAccessible(true);
 // 取得mService的实例化类IConnectivityManager
 iConMgr = conMgrField.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();
 }
 }

根据以上所写就可以做到WIFI网络和GPRS网络的切换了。

以上是“如何使用Android实现WIFI和GPRS网络的切换”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享标题:如何使用Android实现WIFI和GPRS网络的切换
分享URL:http://pwwzsj.com/article/jgceso.html