Android 通过代码实现控制数据网络的开关(仅适用于5.0以上)
16lz
2021-01-23
Android 5.0以前使用ConnectivityManager通过反射两个方法setMobileDataEnabled和getMobileDataEnabled来控制移动网络开和关。
Android 5.0以后使用TelephonyMananger类通过反射获取setDataEnabled和getDataEnabled类完成操作。
注意:需要使用系统权限:android:sharedUserId=”android.uid.system”。系统需要root
//适应Android5.0+
public void setMobileDataState(Context context, boolean enabled) { TelephonyManager telephonyService = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); try { Method setDataEnabled = telephonyService.getClass().getDeclaredMethod("setDataEnabled",boolean.class); if (null != setDataEnabled) { setDataEnabled.invoke(telephonyService, enabled); } } catch (Exception e) { e.printStackTrace(); }}public boolean getMobileDataState(Context context) { TelephonyManager telephonyService = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); try { Method getDataEnabled = telephonyService.getClass().getDeclaredMethod("getDataEnabled"); if (null != getDataEnabled) { return (Boolean) getDataEnabled.invoke(telephonyService); } } catch (Exception e) { e.printStackTrace(); } return false;}
/** 别忘了添加权限 **/
更多相关文章
- cm-14.1 Android系统启动过程分析(四)-Launcher 启动过程
- Android5.1系统通过包名给应用开放系统权限的方法
- Gartner:Android将在2012年成为第二大手机系统
- 彻底解决Android6.0权限管理问题
- 浅析android系统设计中的回调思想
- androidManifest.xml之uses-permission(权限-安全控制)