Android打开/关闭数据流量
2015-07-08 10:32
579 查看
这个是网上找的,经过自己整理。由于android并未公开这个类,因此如果要打开/关闭数据,需要通过反射
MobileDataSwitcher.java
上面这个类有两个方法,一个是设置数据是否打开,另一个是判断是否已经打开,调用方法如下
注:需要添加如下权限
MobileDataSwitcher.java
import java.lang.reflect.Method; import android.content.Context; import android.net.ConnectivityManager; public class MobileDataSwitcher { @SuppressWarnings({ "rawtypes", "unchecked" }) public void setMobileData(Context pContext, boolean pBoolean) { try { ConnectivityManager mConnectivityManager = (ConnectivityManager) pContext.getSystemService(Context.CONNECTIVITY_SERVICE); Class ownerClass = mConnectivityManager.getClass(); Class[] argsClass = new Class[1]; argsClass[0] = boolean.class; Method method = ownerClass.getMethod("setMobileDataEnabled", argsClass); method.invoke(mConnectivityManager, pBoolean); } catch (Exception e) { e.printStackTrace(); } } /** * 返回手机移动数据的状态 * @param pContext * @param arg 默认填null * @return true 连接 false 未连接 */ @SuppressWarnings({ "rawtypes", "unchecked" }) public boolean getMobileDataState(Context pContext, Object[] arg) { try { ConnectivityManager mConnectivityManager = (ConnectivityManager) pContext.getSystemService(Context.CONNECTIVITY_SERVICE); Class ownerClass = mConnectivityManager.getClass(); Class[] argsClass = null; if (arg != null) { argsClass = new Class[1]; argsClass[0] = arg.getClass(); } Method method = ownerClass.getMethod("getMobileDataEnabled", argsClass); Boolean isOpen = (Boolean) method.invoke(mConnectivityManager, arg); return isOpen; } catch (Exception e) { return false; } } }
上面这个类有两个方法,一个是设置数据是否打开,另一个是判断是否已经打开,调用方法如下
if(mMobileDataSwitcher.getMobileDataState(mContext, null)) { // mData.setBackgroundResource(R.drawable.tool_data_off); mMobileDataSwitcher.setMobileData(mContext, false); } else { // mData.setBackgroundResource(R.drawable.tool_data_on); mMobileDataSwitcher.setMobileData(mContext, true); }
注:需要添加如下权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
相关文章推荐
- Android SDK开发包国内下载地址
- android ListView几个比较特别的属性
- Android studio 常见问题汇总
- 关于Android universal-imageloader Out of memory的优化方案
- Android开发性能优化大总结
- android:imeOptions属性(转)
- Android Toast 设置到屏幕中间以及其他自定义Toast的实现方法
- android 数据库存取图片
- Android详细的对话框AlertDialog.Builder使用方法
- android:sharedUserId问题解析
- Android Animations动画使用详解
- Ubuntu 14.04 Android 使用Maven一个 用例project
- android BLE
- Android Studio使用技巧系列教程(一)
- Android Studio 如何打开两个项目?
- android.content.res.Resources$NotFoundException: String resource ID #0x1
- Android 透明背景
- Android编译中m、mm、mmm的区别
- Android4.4 Launcher3的IconCache分析
- Android.mk文件中找Apk需要用到的jar包