我的SDK升级了,我无法使用Eclipse上的代码启用或禁用3G。
此代码不再有效。
private void setMobileDataEnabled(Context context, boolean enabled) throws
ClassNotFoundException, NoSuchFieldException, IllegalAccessException,
NoSuchMethodException, InvocationTargetException {
final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
final Class conmanClass = Class.forName(conman.getClass().getName());
final Field connectivityManagerField = conmanClass.getDeclaredField("mService");
connectivityManagerField.setAccessible(true);
final Object connectivityManager = connectivityManagerField.get(conman);
final Class connectivityManagerClass = Class.forName(connectivityManager
.getClass().getName());
final Method setMobileDataEnabledMethod = connectivityManagerClass
.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(connectivityManager, enabled);
}
应用程序不应该自行打开或关闭 3g/4g/GPS。有一些故障/解决方法允许它,但它们不可靠,因为它们正在得到修复。
您应该做的是通知用户他们的 3g 状态需要更改,也许使用 AlertDialog,并为他们提供通过意图导航到电话设置页面的选项,他们可以在其中手动启用 3g。