Android打开/关闭数据流量
16lz
2021-12-04
这个是网上找的,经过自己整理。由于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);}
注:需要添加如下权限
更多相关文章
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- python起点网月票榜字体反爬案例
- 重定向android log
- exp: 修改Android中strings.xml文件, 动态改变数据
- 【android测试】值得学习的android测试知识连接
- Android--WebView+HTML+Javascript
- Android网络状态获取类 在api 29中 NetworkInfo Deprecated
- unity内置浏览器插件UniWebView的使用(支持Android,ios,Mac)
- Android(安卓)中数据库查询方法 query() 中的 select