我一直在android 2.3 - 4.4.4上使用以下代码,没有任何错误。但是在Android L开发者预览版上运行它会给我以下错误
10-15 15:51:53.499:D / phone(30419):java.lang.NoSuchMethodException:setMobileDataEnabled [boolean]
try {
// log.i("Application running on Ginger bread+");
final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final Class<?> conmanClass = Class.forName(conman.getClass().getName());
final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField.get(conman);
final Class<?> iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, ON);
} catch (Exception e) {
Log.d(TELEPHONY_SERVICE, e.toString());
}
是否有解决此问题的工作。
感谢任何帮助 萨赫勒
答案 0 :(得分:4)
setMobileDataEnabled
。
请改用:
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
Method methodSet = Class.forName(tm.getClass().getName()).getDeclaredMethod( "setDataEnabled", Boolean.TYPE);
methodSet.invoke(tm,true);
确保您的清单上有此权限:
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
此权限仅适用于系统应用
答案 1 :(得分:0)
看看我对类似问题的回答: https://stackoverflow.com/a/27011670/624109
它有一个系统应用程序和root设备的解决方案。