Android打开/关闭数据流量
16lz
2021-01-23
这个是网上找的,经过自己整理。由于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);}
注:需要添加如下权限
更多相关文章
- exp: 修改Android中strings.xml文件, 动态改变数据
- Android 数据绑定视图 dataBinding
- Android 中数据库查询方法 query() 中的 select
- Android 关于获取摄像头帧数据
- Android中使用Gson解析JSON数据
- 安卓9.0 http请求数据失败解决办法
- 待机后,android中activity的数据丢失问题解决
- Android 封装json数据
- android SQLite数据库基本操作示例