从第二个SIM卡打电话(Call from second sim)

2019-06-18 19:52发布

我有一个双卡Android手机。 我使用此代码来拨打电话:

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电话? 有没有一种方法来处理双卡手机?

Answer 1:

这似乎是一个大范围的双SIM卡的设备如摩托罗拉,Micromax的,HTC,三星的工作

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

要么

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

如果不行试试这个,在三星小号二重奏这工作得很好。

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

要么

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

不幸的是,这些事情,我们必须进入命中/试用模式,因为没有正式的文件是有双卡的支持。



Answer 2:

    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);

在双卡华硕Fonepad 7的Android 5.0的工作



Answer 3:

Android不提供API来支持双SIM卡的设备。 Android的唯一支持默认SIM卡的SIM卡相关的API(通常SIM#1)。 这是硬件实现,以支持Android双SIM卡,因此设备制造商必须实现自己的API或自定义的源代码,以支持他们的硬件组件。 您可以联系到设备制造商的双卡支持SDK。



文章来源: Call from second sim