在android jelly bean中以编程方式打开/关闭移动网络连接

时间:2013-06-10 12:55:08

标签: android android-4.2-jelly-bean android-networking

我使用以下代码打开/关闭移动网络。

        final ConnectivityManager conman = (ConnectivityManager) getApplicationContext().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);

我使用Android 2.3.X,4.0.X和4.1.X测试了此代码。它仅使用2.3.X和4.0.X,但 4.1.X 失败。

我在使用Android Jelly Bean进行测试时遇到java.lang.NoSuchFieldException: mService异常。

我的问题还有其他解决办法吗?我在清单文件中添加了所有必需的权限。

1 个答案:

答案 0 :(得分:2)

   try
              {
    dataMtd = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
              } 
              catch (SecurityException e1) 
              {

                e1.printStackTrace();
              } 
              catch (NoSuchMethodException e1) 
              {

                e1.printStackTrace();
              }

                dataMtd.setAccessible(true); 
               try {

                dataMtd.invoke(conm,true);



              } 
}

datamtd是一种方法..试试这个我的朋友。我在之前的应用程序中发现它成功了。希望这可以帮到你。对不起,如果没有,因为我没经验丰富。:)