Android 5.0以上移动网络开关
来源:互联网 发布:微信群怎么做淘宝客 编辑:程序博客网 时间:2024/04/29 05:28
Android 5.0以前使用ConnectivityManager通过反射两个方法setMobileDataEnabled和getMobileDataEnabled来控制移动网络开和关。
Android 5.0以后使用TelephonyMananger类通过反射获取setDataEnabled和getDataEnabled类完成操作。
注意:需要使用系统权限:android:sharedUserId=”android.uid.system”。
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;}1 <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
自适应Android5.0以前及以后的代码:
TelephonyManager mTelephonyManager = (TelephonyManager)context .getSystemService(Context.TELEPHONY_SERVICE);ConnectivityManager mConnectivityManager =(ConnectivityManager)context .getSystemService(Context.CONNECTIVITY_SERVICE);
public void setDataEnable(){ Object object = Build.VERSION.SDK_INT >= 21 ? mTelephonyManager : mConnectivityManager; String methodName = Build.VERSION.SDK_INT >= 21 ? "setDataEnabled" : "setMobileDataEnabled"; Method setMobileDataEnable; try { setMobileDataEnable = object.getClass().getMethod(methodName, boolean.class); setMobileDataEnable.invoke(object, true); } catch (Exception e) { e.printStackTrace(); } }
public void checkConnectState(){ while(true){ Object object = Build.VERSION.SDK_INT >= 21 ? mTelephonyManager : mConnectivityManager; String methodName = Build.VERSION.SDK_INT >= 21 ? "getDataEnabled" : "getMobileDataEnabled"; Method getMobileDataEnable; boolean isDataEnabled = false; try { getMobileDataEnable = object.getClass().getMethod(methodName, null); isDataEnabled = (Boolean) getMobileDataEnable.invoke(object, null); } catch (Exception e) { e.printStackTrace(); } if(isDataEnabled){ break; }else{ sleep(200); } }}
0 0
- Android 5.0以上移动网络开关
- Android 5.0以上移动网络开关
- android 控制移动网络开关
- Android5.0以上系统的移动网络开关
- Android5.0以上系统的移动网络开关
- Android 判断是否打开移动网络开关
- Android中使用代码开关GPS、移动网络(GPRS)、WiFi
- Android中使用代码开关GPS、移动网络(GPRS)、WiFi
- android网络数据开关
- 安卓5.0 以上移动网络耗电异常解决方法
- 开关Android的APN网络
- android 代码控制飞行模式开关 支持4.2以上 root
- 代码中开关Wifi、移动网络和GPS
- 如何开关Android的APN网络
- 代码控制android手机的网络开关。
- 代码控制android手机网络的开关
- Android移动开发-在Android 5.0 以上版本自定义Toolbar的实现
- Android 移动网络框架
- 嵌入式linux系统部署
- the summary of sklearn.covariance
- openLDAP在windows上的安装配置
- 12.《深入理解Java虚拟机》Java内存模型JMM
- 使用Android注解来改善代码
- Android 5.0以上移动网络开关
- 微信小程序解析html富文本插件wxParse
- mysql 开启定时
- CSS中的绝对定位与相对定位
- .net下使用GeckoWebBrowser步骤
- 今天课上完了,本周基本没课了
- Linux知识总结
- HTTPS的七个误解
- https之DHE keys 大小修改