第二张SIM卡的电话呼叫

23

我有一部双卡安卓手机。我正在使用以下代码进行拨打电话操作:

private void callBack(String phone, Context context) {
        Intent callIntent = new Intent(Intent.ACTION_CALL)
                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        callIntent.setData(Uri.parse("tel:" + phone));
        context.startActivity(callIntent);

    }

它工作得很好。但它总是从Sim1(首选Sim)拨打电话。我该如何从Sim2拨打电话?有办法处理双卡手机吗?

3个回答

34

这似乎适用于许多双卡设备,如摩托罗拉、Micromax、HTC和三星。

intent.putExtra("com.android.phone.extra.slot", 0); //For sim 1
intent.putExtra("com.android.phone.extra.slot", 1); //For sim 2

如果不起作用,请尝试这个,在三星S duos上,这个非常好用。

intent.putExtra("simSlot", 0); //For sim 1

或者

intent.putExtra("simSlot", 1); //For sim 2

不幸的是,对于这些事情,由于双卡支持没有官方文档,我们必须进入试错模式。


1
谢谢。让我在其他手机上检查一下。顺便问一下,你是怎么知道这个问题的?没有任何文档记录吗? - Seshu Vinay
2
我的几次随机尝试之一 - user1411614
1
这个方法适用于所有的安卓手机吗?(我试过了,但是在我的手机上不起作用)如果有任何方法可以从第二张SIM卡发送短信吗? - user934820
@SeshuVinay 我已经在一台Micromax设备上尝试过了,但它没有工作。不幸的是,我没有三星双卡手机来测试,你知道如何使其在所有手机上都能工作吗? - dirtydexter
@dirtydexter 不好意思,这方面没有官方文档。 - Seshu Vinay
@SeshuVinay 我知道官方文档缺失完整的双卡支持,但我正在寻找一些能帮助我完成此操作的黑科技。 - dirtydexter

5
    final Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumberOrUssd));
    final int simSlotIndex = 1; //Second sim slot

    try {
        final Method getSubIdMethod = SubscriptionManager.class.getDeclaredMethod("getSubId", int.class);
        getSubIdMethod.setAccessible(true);
        final long subIdForSlot = ((long[]) getSubIdMethod.invoke(SubscriptionManager.class, simSlotIndex))[0];

        final ComponentName componentName = new ComponentName("com.android.phone", "com.android.services.telephony.TelephonyConnectionService");
        final PhoneAccountHandle phoneAccountHandle = new PhoneAccountHandle(componentName, String.valueOf(subIdForSlot));
        intent.putExtra("android.telecom.extra.PHONE_ACCOUNT_HANDLE", phoneAccountHandle);
    } catch (Exception e) {
        e.printStackTrace();
    }

    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);

在双卡Asus Fonepad 7上使用Android 5.0。


3

Android并不提供支持双SIM设备的API。Android的SIM卡相关API只支持默认的SIM卡(通常是SIM卡#1)。在Android上支持双SIM是硬件实现,因此设备制造商必须自己实现其API或自定义源代码以支持其硬件组件。您可以联系设备制造商获取双SIM支持的SDK。


非常不幸 - zeroDivider

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接