Звонок со второго сима

У меня есть двойной сим-телефон для 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? Есть ли способ работать с двумя сим-телефонами?

Ответ 1

Это, похоже, работает на большом количестве двух сим-устройств, таких как Motorola, Micromax, HTC, Samsung

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

ИЛИ

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

и если это не работает, попробуйте это, в Samsung S duos это работает отлично.

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

ИЛИ

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

К сожалению, для этих вещей мы должны попасть в хит/пробный режим, так как официальная документация для поддержки с двумя SIM-картами отсутствует.

Ответ 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);

Работа над двумя SIM-картами Asus Fonepad 7 Android 5.0

Ответ 3

Android не предоставляет API для поддержки двух SIM-устройств. SIM-карты, относящиеся к API для Android, поддерживают только SIM-карту по умолчанию (обычно SIM № 1). Это аппаратная реализация для поддержки двойной SIM-карты на Android, поэтому производитель устройства должен реализовать свои собственные API-интерфейсы или настроить исходный код для поддержки своего аппаратного компонента. Вы можете связаться с производителем устройства для поддержки двух SIM-карт SDK.