移动数据无法启动

时间:2013-10-15 01:44:08

标签: java android

我问了这个问题,但我没有收到答案。

我使用以下代码打开移动数据(3G)。

private static void setMobileDataEnabled(Context context, boolean enabled){

            try{
                ConnectivityManager conman = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
                Method setMobileDataEnabledMethod = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
                setMobileDataEnabledMethod.setAccessible(true);
                setMobileDataEnabledMethod.invoke(conman, enabled);

            }catch(NoSuchMethodException e){e.printStackTrace();}
            catch(InvocationTargetException e){e.printStackTrace();}
            catch(IllegalAccessException e){e.printStackTrace();}

        }

我称之为:

setMobileDataEnabled(getBaseContext(), true/false);

正确启用/禁用移动数据,但此代码在双SIM卡设备上无法正常运行。我在三星Dual-SIM上的摩托罗拉Razr D1,D3上进行了测试(现在不记得了)但是这段代码不起作用。一切正常,应用程序不会崩溃。

我尝试了“getApplicationContext()”和“this”,而不是“getBaseContext()”,但没有改变。

我了解到Android并非专为双芯片设备设计,这可能是一个问题,因为我无法定位任何SIM卡,因此我无法找到任何技巧或其他任何“修复”代码,我是对的?

如何在双芯片设备上打开/关闭移动数据?我看了一下源代码,setMobileDataEnabled是“public”,应该不能访问它吗?

我也找到了IConnectivityManager类,但它不是java扩展,我认为它是.aidl或者什么(不记得了),它可以有用吗?

我不知道该怎么做,我需要帮助。

抱歉我的英文。

感谢。

1 个答案:

答案 0 :(得分:1)

尝试此链接Enable/Disable Mobile Data (GPRS) using code

始终建议使用通用方法。 HOwever,您的代码可能只适用于API 8 / API 10.您是否在android清单文件中添加了权限?检查链接问题的第一个答案并执行。

如果不起作用,请检查与您的代码相同的第二个。但是,我将推荐第一种方法,因为这样,您就不必单独为每个API编写代码。另外正如@tdevinda所说,代码可能因设备到设备,单一SIM卡到多线程,gsm-cdma-wcdma版本,API级别和设备制造商而异。我希望它有所帮助:)

编辑:目前还没有Android开发者页面的官方帮助。 HOwever,您可以提出申请。我也无法找到任何解决方案。双SIM卡问题没有解决。

编辑2:检查图片。Solution Trick