关闭

Android打开/关闭数据流量

标签: 打开数据流量移动网路
5506人阅读 评论(2) 收藏 举报
分类:

这个是网上找的,经过自己整理。由于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"/>


4
0
查看评论

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

在安卓5.0之前打开gprs 通常都是通过 反射调用 ConnectivityManager 的setMobileDataEnabled方法打开流量 //检测GPRS是否打开 private static boolean gprsIsOpenMethod(ConnectivityMana...
  • u012889434
  • u012889434
  • 2016-12-14 16:40
  • 2742

开启和关闭android移动网络

开启和关闭移动数据网络有两种方法:一种是通过操作系统的数据库改变APN(网络接入点),从而实现开启和关闭移动数据网络,另一种是通过反射调用系统(ConnectivityManager)的setMoblieDataEnabled方法,通过操作该方法开启和关闭系统移动数据,同时也可以通过反射调用getM...
  • u013037007
  • u013037007
  • 2015-04-12 19:58
  • 602

实现开启和关闭android移动网络

开启和关闭移动数据网络有两种方法:一种是通过操作系统的数据库改变APN(网络接入点),从而实现开启和关闭移动数据网络,另一种是通过反射调用系统(ConnectivityManager)的setMoblieDataEnabled方法,通过操作该方法开启和关闭系统移动数据,同时也可以通过反射调用getM...
  • fangzhibin4712
  • fangzhibin4712
  • 2014-05-22 10:16
  • 11965

Android 6.0 自动开启移动数据流程

在M版本,触发建立默认的数据连接的机制跟以前的版本有比较大的变化,本文主要介绍触发建立数据连接的开始阶段,而建立data call的过程跟之前是一样的,只要条件准备好了发起就可以了。 step 1:在ConnectivityService构造的时候就创建了一个默认的defaul...
  • leesino
  • leesino
  • 2016-01-14 14:37
  • 4164

android默认打开数据连接

TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在应用程序中可以使用这些get方法获取相关数据。TelephonyManager类的对象可以通过Context.getSystemServ...
  • u013921245
  • u013921245
  • 2016-01-26 16:14
  • 1860

Android中使用代码控制Wifi及数据连接网络开关

有时我们需要在APP中控制WIFI和数据连接的开关,在Android中,是有相应的接口可以实现这一功能的。 控制WIFI开关控制WIFI开关需要使用WifiManager这一系统服务。首先我们通过代码获取到它:WifiManager wifiManager = (WifiManager) mCon...
  • ucxiii
  • ucxiii
  • 2015-12-10 23:00
  • 6603

Android判断网络连接是否可用,WiFi、移动数据是否打开等

Android判断网络连接是否可用,WiFi、移动数据是否打开等 添加权限 代码 //判断网络连接是否可用 public static boolean isNetworkAvailable(Context context) { ConnectivityMan...
  • shenyuanqing
  • shenyuanqing
  • 2015-10-19 14:33
  • 7934

android建立数据连接的过程

  • 2016-08-08 16:53
  • 82KB
  • 下载

【Settings】默认关闭数据流量

Settings中大部分的默认值可以通过SettingsProvider的res/values/defaults中的默认值的修改实现,比如wifi默认开启关闭,GPS默认开启关闭。 但是defaults.xml中没有默认开关数据流量的选项 一般defaults中没有的可以通过DatabaseHe...
  • okm6666
  • okm6666
  • 2016-03-26 12:36
  • 1315

6.0默认打开数据开关

M上插入NEW SIM,google原生是默认关闭数据开关; 可按MTK solution客制修改打开默认数据开关     [SOLUTION]    1./frameworks/opt/telephony/src/java/com/mediat...
  • wds1181977
  • wds1181977
  • 2017-04-06 14:30
  • 477
    个人资料
    • 访问:70095次
    • 积分:1317
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:5篇
    • 译文:0篇
    • 评论:16条
    文章分类
    最新评论