由于打开或者关闭GPRS的API是隐藏的,这里采用JAVA反射机制来实现打开或者关闭移动数据开关。
private void setNetEnabled(Context context, boolean enabled)
throws Exception {
final ConnectivityManager conman = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
@SuppressWarnings("rawtypes")
final Class conmanClass = Class.forName(conman.getClass().getName());
final Field iConnectivityManagerField = conmanClass
.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField
.get(conman);
@SuppressWarnings("rawtypes")
final Class iConnectivityManagerClass = Class
.forName(iConnectivityManager.getClass().getName());
@SuppressWarnings("unchecked")
final Method setMobileDataEnabledMethod = iConnectivityManagerClass
.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
}
经测试,在2.3、4.0、4.1版本的手机上可以实现打开或者关闭GPRS,其他版本的手机没有测试。
本文介绍了一种使用Java反射机制来实现对移动设备GPRS数据开关进行控制的方法,并提供了具体的代码实现。该方法已在Android 2.3、4.0、4.1版本中验证有效。
1万+

被折叠的 条评论
为什么被折叠?



