Звонок со второй симки

У меня телефон на андроиде с двумя симками. Я использую этот код для вызова:

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


person Seshu Vinay    schedule 05.11.2012    source источник


Ответы (3)


Кажется, это работает на большом количестве устройств с двумя SIM-картами, таких как Motorola, Micromax, HTC, Samsung.

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

OR

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

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

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

OR

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

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

person Community    schedule 20.10.2013
comment
Спасибо. Позвольте мне проверить это на других телефонах. Кстати, как вы узнали об этом? Нет, где это задокументировано? - person Seshu Vinay; 21.10.2013
comment
Одна из моих нескольких случайных попыток - person ; 21.10.2013
comment
Этот метод работает на всех телефонах Android? (пробовал, но на моем телефоне не заработало) И есть ли способ отправить смс со второй симки. - person user934820; 07.12.2013
comment
@SeshuVinay Я пробовал это на устройстве micromax, но оно не работает. К сожалению, у меня нет двухсимочного Samsung для тестирования, знаете ли вы, как его можно заставить работать на всех телефонах? - person dirtydexter; 24.06.2014
comment
@dirtydexter Нет! К сожалению, официальной документации по этому поводу нет. - person Seshu Vinay; 24.06.2014
comment
@SeshuVinay Я знаю об отсутствии официальной документации для полной поддержки двух SIM-карт, но я ищу какой-нибудь хак, который мог бы помочь мне в этом. - person dirtydexter; 24.06.2014

    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

person Сергей Попков    schedule 23.02.2016

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

person Kishore    schedule 21.12.2012