闲暇无事整理下以前做的小东西
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); } }
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦