闲暇无事整理下以前做的小东西
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import android.content.Context;
import android.net.ConnectivityManager;
import android.util.Log;
public class MobileDataSwitch {
/** 移动数据开启和关闭
* @param context
* @param enabled=true开启网络 enabled=false关闭网络
* AndroidMannifest.xml文件里添加访问权限
* <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />,
* <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
*/
public static void setMobileDataStatus(Context context,boolean enabled){
ConnectivityManager conMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
//ConnectivityManager类
Class<?> conMgrClass = null;
//ConnectivityManager类中的字段
Field iConMgrField = null;
//IConnectivityManager类的引用
Object iConMgr = null;
//IConnectivityManager类
Class<?> iConMgrClass = null;
//setMobileDataEnabled方法
Method setMobileDataEnabledMethod = null;
try
{
//取得ConnectivityManager类
conMgrClass = Class.forName(conMgr.getClass().getName());
//取得ConnectivityManager类中的对象Mservice
iConMgrField = conMgrClass.getDeclaredField("mService");
//设置mService可访问
iConMgrField.setAccessible(true);
//取得mService的实例化类IConnectivityManager
iConMgr = iConMgrField.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(Exception e){
e.printStackTrace();
}
}
/**
* 获取移动数据开关状态
* @param context
* @param getMobileDataEnabled 传入实参"getMobileDataEnabled"
* @return true打开状态 false关闭状态
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static boolean getMobileDataStatus(Context context,String getMobileDataEnabled){
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
Class cmClass = cm.getClass();
Class[] argClasses = null;
Object[] argObject = null;
Boolean isOpen = false;
try{
Method method = cmClass.getMethod(getMobileDataEnabled, argClasses);
isOpen = (Boolean)method.invoke(cm, argObject);
}catch(Exception e){
e.printStackTrace();
}
return isOpen;
}
/**
* 设置网络 开启/关闭
* @param mContext
*/
public void getMobileStaute(Context mContext){
boolean statue =getMobileDataStatus(mContext, "getMobileDataEnabled");
boolean statues = ( statue == true)?false:true;
Log.v("TAG", "statues=="+statues);
setMobileDataStatus(mContext, statues);
}
}
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦