博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android如何用程序实现启用gprs或者3g网络
阅读量:6437 次
发布时间:2019-06-23

本文共 1942 字,大约阅读时间需要 6 分钟。

hot3.png

如果要用android程序来实现wifi的开启和关闭,是一件十分简单的事,使用WifiManager就可以实现对android wifi接口的控制,开启和关闭wifi都是仅需要两行代码。但如果你想通过代码来实现对gsm、gprs或者3G等移动网络接口控制的话,则不是那么容易了,因为在android开发者文档里并没有明确的方法来实现的,通过查看android的源代码可以知道,源代码是通过ConnectivityManager.setMobileDataEnabled方法来实现移动网络中的使用数据包选项的启用和禁用的,不过android官方刻意地把这个方法隐藏了 ,是通过把方法定义为private类型来对外禁用的,也就是说只有系统级的应用才能调用setMobileDataEnabled方法来控制无线和网络中的移动网络接口。
那么对于第三方开发的android应用,是不是就没有办法启用和禁用移动网络中的使用数据包选项了?
非也!

只要巧用java中的反射就可以实现调用到ConnectivityManager类中的setMobileDataEnabled方法,从而实现用程序来启用和禁用移动网络中的使用数据包选项,达到开启和关闭gprs或者3g移动网络的目的。

private void setMobileDataEnabled(Context context, boolean enabled) { final String TAG = "setMobileDataEnabled"; final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); Class conmanClass; try { conmanClass = Class.forName(conman.getClass().getName()); final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService"); iConnectivityManagerField.setAccessible(true); final Object iConnectivityManager = iConnectivityManagerField.get(conman); final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName()); final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE); setMobileDataEnabledMethod.setAccessible(true);setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block Log.d(TAG, "ClassNotFoundException"); } catch (NoSuchFieldException e) { Log.d(TAG, "NoSuchFieldException"); } catch (IllegalArgumentException e) { Log.d(TAG, "IllegalArgumentException"); } catch (IllegalAccessException e) { Log.d(TAG, "IllegalAccessException"); } catch (NoSuchMethodException e) { Log.d(TAG, "NoSuchMethodException"); } catch (InvocationTargetException e) { Log.d(TAG, "InvocationTargetException"); }finally{ } }

具体的代码如下:

转载于:https://my.oschina.net/netmouse/blog/184649

你可能感兴趣的文章
编码列表
查看>>
eigrp 配置
查看>>
谈一谈 redis 集群
查看>>
concurrent包
查看>>
在Linux下调试Python代码的各种方法
查看>>
centos7塔建MQ服务器
查看>>
Peer authentication failed for user
查看>>
超强的.NET图像工具包VintaSoftImaging.NET SDK更新至v8.6丨75折优惠
查看>>
阿里云上Kubernetes集群联邦
查看>>
洛谷2219:[HAOI2007]修筑绿化带——题解
查看>>
监控webservice信息
查看>>
a标签中href=""的几种用法(转)
查看>>
python
查看>>
ubuntu 常用生产环境部署配置测试调优
查看>>
【JS】//将中文逗号转换为英文逗号
查看>>
在VS2012中实现Ext JS的智能提示太简单了
查看>>
Extnet Direct 提交后台事件文件下载设置
查看>>
邻接矩阵与二叉排序树
查看>>
CSS选择器
查看>>
购物车练习
查看>>