0

我想在我的双 SIM 卡设备上执行网络提供商搜索。到目前为止,我一直在通过打开“网络设置”页面中的“可用网络”或“网络运营商”菜单项来做到这一点。我一直在使用这个意图:

intent.setComponent(ComponentName.unflattenFromString("com.android.phone/.NetworkSetting"));

这直接打开了正确的活动,并自动开始搜索可用网络。

但是,我现在使用的是双 SIM 卡设备,每当我按照上述意图打开该活动时,它都会在活动的“SIM2”选项卡上打开,因此我在搜索可用网络时收到错误消息(SIM2 是空,但没关系,因为我想要 SIM1 的功能)。有什么方法可以选择在哪个 SIM 卡下打开活动?或在主SIM卡上打开搜索网络所需活动的正确方法?

我一直在寻找,这不是一个很常见的事情,所以实际上什么也没找到。

4

1 回答 1

0

此代码适用于我的 China A918 DualSim Android 手机:

Intent intent = new Intent();
intent.setClassName("com.android.phone", "com.mediatek.settings.MultipleSimActivity");
PackageManager packageManager = getPackageManager();
// check if intent is available on device:
List list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (list.size() > 0) {
    // set Intent to start after SIM card selection:
    intent.putExtra("TARGET_CLASS", "com.android.phone.NetworkSetting");
    intent.putExtra("ITEM_TYPE", "PreferenceScreen");
} else {
    // run default android network settings intent
    intent.setClassName("com.android.phone", "com.android.phone.NetworkSetting");
}
startActivity(intent);

在 Android DualSim 手机中,您需要运行不同的 Intent 才能进入 NetworkSettings,因为当插入两张 SIM 卡时,您应该可以选择第一张或第二张卡。

就我而言,这是com.mediatek.settings.MultipleSimActivity. 如果它不起作用,请通过 android 系统设置检查进入“可用网络”时启动的 Intent 的 ADB 日志

于 2015-01-19T12:04:17.607 回答