Звонок со второго сима
У меня есть двойной сим телефон 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? Есть ли способ справиться с двумя сим телефонами?
3 ответа
Кажется, это работает на большом количестве устройств с двумя сим-картами, таких как 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
к сожалению, для этих вещей мы должны перейти в режим Hit / Trial, так как нет официальной документации по поддержке Dual-SIM.
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
Android не предоставляет API для поддержки устройств с двумя SIM-картами. Связанные с SIM-картами API Android поддерживают только SIM-карту по умолчанию (обычно SIM-1). Это аппаратная реализация для поддержки двух SIM-карт на Android, поэтому производители устройств должны реализовать свои собственные API или настроить исходный код для поддержки своего аппаратного компонента. Вы можете связаться с производителем устройства для получения двух SIM-карт с поддержкой SDK.