android - 在双卡 android 中禁用数据连接

标签 android dual-sim data-connections

我想禁用数据连接,我正在使用此代码。

ConnectivityManager dataManager;
    dataManager  = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

    try {
        dataMtd = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
    } catch (NoSuchMethodException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    dataMtd.setAccessible(true);
    try {
        dataMtd.invoke(dataManager, false);
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

这不适用于双卡。所以有人可以帮助我。 如何禁用双卡 android 手机中的数据连接? 以及如何检查手机是否是双 SIM 卡

最佳答案

这里要提几点:

  • 在 Android 5.1 之前,没有用于双卡功能的官方 API。因此,似乎没有适用于旧设备的通用解决方案。从 5.1 开始,API 可用。
  • 您的代码将不再适用于 Android 5+,正如所指出的 in this question
  • 然而,this answer为上述两个要点提供了解决方案:setMobileNetworkfromLollipop 方法检查目标是 5 还是 5.1+,如果是 5.1+,它循环遍历所有订阅 ID(=sim 卡)以切换数据服务。您可以将它与您的代码结合起来以也针对以前的版本。缺点:它需要 root 访问权限,双卡功能仅限于 5.1+。

关于android - 在双卡 android 中禁用数据连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31627397/

相关文章:

java - system.gc() 和 runtime.gc() 之间的区别

android - SubscriptionManager 为运行 Android 5.1+ 的双 SIM 卡设备读取 IMSI

android - 是否可以同时 ping 测试双卡 3G 网络?

linq-to-sql - 为什么 OR 设计师不让我将表格拖动到设计表面?

linux - 通过 pgAdmin III 的 PostgreSQL - 服务器不监听

c# - DataTable的数据

android - 检查 WorkManager 是否已安排

java - 为 fragment 中的启动 Activity 制作图像按钮?

Android Material Design 抽屉导航菜单图标更改

android-6.0-marshmallow - 三星 android 6.0 如何获取带有 sim 插槽 ID 的双 SIM 卡通话记录?