我问了这个问题,但没有得到答案。
我使用以下代码打开移动数据(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 卡设备上无法正常工作。我在三星双 SIM 卡中的摩托罗拉 Razr D1、D3 上进行了测试(现在不记得了),但这段代码不起作用。一切正常,应用程序不会崩溃。
我尝试了“getApplicationContext()”和“this”而不是“getBaseContext()”,但没有任何改变。
我了解到 Android 不是为双芯片设备设计的,这可能是个问题,因为我无法针对任何 SIM 卡,所以我找不到任何技巧或其他任何东西来“修复”代码,我我对吗?
如何在双芯片设备上打开/关闭移动数据?我看了一下源代码,setMobileDataEnabled 是“公共的”,谁不应该访问它?
我也找到了 IConnectivityManager 类,但它不是 java 扩展,我认为它是 .aidl 什么的(不记得了),它可以有用吗?
我不知道该怎么办,我确实需要帮助。
对不起我的英语不好。
谢谢。