Android L:数据关闭错误

时间:2014-10-15 10:26:09

标签: android

我一直在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());
    }

是否有解决此问题的工作。

感谢任何帮助 萨赫勒

2 个答案:

答案 0 :(得分:4)

Android L已删除

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设备的解决方案。