android - siempre - configurar tarjeta sim
Llamar desde el segundo sim (3)
Android no proporciona API para soportar dispositivos SIM dobles. Las API de Android relacionadas con la tarjeta SIM solo son compatibles con la tarjeta SIM predeterminada (generalmente SIM # 1). Es una implementación de hardware compatible con SIM dual en Android, por lo tanto, el fabricante del dispositivo debe implementar sus propias API o personalizar el código fuente para admitir su componente de hardware. Puede ponerse en contacto con el fabricante del dispositivo para obtener doble SIM compatible con SDK.
Tengo un teléfono Android dual sim. Estoy usando este código para hacer una llamada:
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);
}
Está funcionando bien. Pero siempre hace call desde sim1 (preferible sim). ¿Cómo hago llamadas desde sim2? ¿Hay una manera de manejar los teléfonos de doble sim?
Esto parece funcionar en una amplia gama de dispositivos de doble simulación como Motorola, Micromax, HTC, Samsung
intent.putExtra("com.android.phone.extra.slot", 0); //For sim 1
O
intent.putExtra("com.android.phone.extra.slot", 1); //For sim 2
y si no funciona, intente esto, en Samsung S dúos, esto funciona bien.
intent.putExtra("simSlot", 0); //For sim 1
O
intent.putExtra("simSlot", 1); //For sim 2
desafortunadamente, para estas cosas tenemos que entrar en el modo de prueba / prueba, ya que no hay documentación oficial para el soporte de doble 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);
Trabaja en dual sim de Asus Fonepad 7 Android 5.0