我问过这个问题,但我没有得到答复.
我使用以下代码打开移动数据(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();}
}
Run Code Online (Sandbox Code Playgroud)
我称之为:
setMobileDataEnabled(getBaseContext(), true/false);
Run Code Online (Sandbox Code Playgroud)
它正确启用/禁用移动数据,但此代码在双SIM卡设备上无法正常工作.我在三星Dual-SIM上的摩托罗拉Razr D1,D3上进行了测试(现在不记得),但这段代码不起作用.一切正常,应用程序不会崩溃.
我试过"getApplicationContext()"和"this"而不是"getBaseContext()",但没有改变.
我了解到Android并非专为双芯片设备设计,这可能是一个问题,因为我无法定位任何SIM卡,所以我无法找到任何技巧或其他任何"修复"代码,我我对吗?
我可以做些什么来在双芯片设备上打开/关闭移动数据?我把在源代码一看,setMobileDataEnabled是"公共",磨片不应该访问它?
我也找到了IConnectivityManager类,但它不是java扩展,我认为它是.aidl或者什么(不记得了),它可以有用吗?
我不知道该怎么办,我需要帮助.
对不起我的英语不好.
谢谢.
尝试此链接使用代码启用/禁用移动数据 (GPRS)
始终建议使用通用方法。但是,您的代码可能仅适用于 API 8/API 10。您是否在 android 清单文件中添加了权限?检查链接问题的第一个答案并执行它。
如果它不起作用,请检查与您的代码相同的第二个。但是,我会推荐第一种方法,因为这样您就不必为每个 API 单独编写代码。另外,正如 @tdevinda 所说,代码可能因设备、单卡到多卡、gsm-cdma-wcdma 版本、API 级别和设备制造商的不同而有所不同。我希望它有帮助:)
编辑: Android 开发者页面还没有官方帮助。但是,您可以提出请求。我也无法找到任何解决方案。双卡双待的问题还没有解决。
编辑2:检查图像。
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |