【问题标题】:Android L: Data turn off errorAndroid L:数据关闭错误
【发布时间】:2014-11-19 22:29:26
【问题描述】:

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

有没有办法解决这个问题。

任何帮助表示赞赏 萨希尔

【问题讨论】:

  • 呵呵,使用非公共 API 就这样结束了……

标签: android


【解决方案1】:

setMobileDataEnabled 已在 Android L 中删除。

改用这个:

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"/>

此权限仅适用于系统应用

【讨论】:

  • 有没有办法通过root获得这个权限?
猜你喜欢
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-10
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多