为了账号安全,请及时绑定邮箱和手机立即绑定

设置/获取网络状态

标签:
Android

闲暇无事整理下以前做的小东西

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);
}
}

原文链接:http://www.apkbus.com/blog-104595-58834.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消