如何在Android 5.0上以编程方式关闭/打开3G / 4G / Data?

时间:2015-07-13 15:45:58

标签: android 3g 4g

为什么这段代码不适用于android 5.0

我在Android 4.3 上进行测试,但在android 5.0 上无法正常工作。

请帮帮我。

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 java.lang.reflect.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);
	}

2 个答案:

答案 0 :(得分:1)

谷歌已经以实用方式取消了用于开启/关闭数据的API。 您可以查看link上提交的问题。

如果您想了解更多详细信息,可以在link详细讨论那里进行详细讨论

如果您觉得有帮助,请接受此作为答案

答案 1 :(得分:0)

在使用反射的棒棒糖之前是可能的。这是不可能的。