【问题标题】:Call from second sim从第二个 sim 呼叫
【发布时间】:2012-11-05 12:17:19
【问题描述】:

我有一部双卡安卓手机。我正在使用此代码拨打电话:

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 拨打电话?有没有办法处理双卡手机?

【问题讨论】:

    标签: android phone-call dual-sim


    【解决方案1】:

    这似乎适用于摩托罗拉、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
    

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

    【讨论】:

    • 谢谢。让我在其他手机上检查一下。 BTW,你是怎么知道这件事的?没有记录在哪里?
    • 我的几次随机尝试之一
    • 这个方法适用于所有安卓手机吗? (我试过了,但它在我的手机上不起作用)如果有任何方法可以从第二个 sim 发送短信。
    • @SeshuVinay 我已经在 micromax 设备上尝试过,但它不起作用。不幸的是,我没有三星 dualsim 可以测试,你知道如何让它在所有手机上运行吗?
    • @dirtydexter 不!不幸的是,没有这方面的官方文档
    【解决方案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);
    

    使用双卡 Asus Fonepad 7 Android 5.0

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多