Android打开/关闭数据流量

原创 2015年07月08日 10:32:13

这个是网上找的,经过自己整理。由于android并未公开这个类,因此如果要打开/关闭数据,需要通过反射

16/09/29注:5.0以上无效

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之防火墙功能的实现

需求:可以控制某个应用访问WIFI或移动网络的功能。 Android自带防火墙原理是:一旦开启防火墙,所有的应用都不能访问网络(包括WIFI和移动网络),所以不能满足需求,故需要在原生基础上新增两个方...

android 用代码打开 gprs(流量开关) android 5.0 ROOT

在安卓5.0之前打开gprs 通常都是通过 反射调用 ConnectivityManager 的setMobileDataEnabled方法打开流量 //检测GPRS是否打开 privat...

android开关gprs流量

一、需要权限:   二、下面代码实现功能、如果gprs已经打开则先关闭再打开、否则直接打开、   package com.example.gprstoggle; impor...

Android判断上网方式(Wifi还是数据流量)

 首先要在AndroidManifest.xml加上权限: [html] view plaincopyprint? uses-permission android:n...

【原创】Android 判断默认数据网络是否为开,若关则跳转到网络配置页面

声明:该方法仅用于判断默认数据网络,即每个月需要交X元,获得XX M的上网流量的数据网络。没有对wifi等,进行判断。 第一步,添加读取手机网络状态的权限 第二步,判断默认数据...

Android判断上网方式(Wifi还是数据流量)

首先要在AndroidManifest.xml加上权限: 判断有无网络连接: ConnectivityManager mConnectivity = (ConnectivityManager)ge...
  • xundh
  • xundh
  • 2015-04-07 09:40
  • 13270

Android手机同时使用Wi-Fi和数据流量

Android手机同时使用Wi-Fi和数据流量大家都知道,当手机成功连接到Wi-Fi热点以后,手机所产生的上网流量都是通过Wi-Fi来传输的,而手机的移动流量会被禁用。但是,我们现在有特殊的业务需求,...

android 数据流量统计

TrafficStats Java层流量统计接口。 全局接口提供从系统启动以来所有网络及mobile网络的发送接收数据统计 ...

android 判断网络状态 (无网络 wifi 数据流量)

/** * 检测网络是否连接 * @return */ private boolean checkNetworkState() { ...

Android移动数据流量和WIFI联网分析

Android移动数据流量和WIFI联网分析本篇博客为原创博客,转载请复制 http://blog.csdn.net/u013298947/article/details/53185897连接哦~:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)