Quiero detectar si hay dos tarjetas SIM en mi teléfono Android dual-SIM programáticamente. Encontré una API (TelephonyManager.getSIMState()
), pero es para teléfonos normales con una sola SIM. ¿Hay alguna API para detectar si se insertan o no dos SIM en mi teléfono con doble SIM?Detecta el estado de dos tarjetas SIM en un teléfono Android dual-SIM
Respuesta
Android no es compatible con varias SIM, al menos desde el SDK. Los fabricantes de dispositivos que han creado dispositivos multi-SIM lo hacen por su cuenta. Le invitamos a ponerse en contacto con el fabricante de su dispositivo y ver si tienen un complemento SDK o algo que le permite acceder a la segunda tarjeta SIM.
Editar:(15 de de julio de, 2015)
Desde API 22, se puede comprobar para múltiples tarjetas SIM utilizando SubscriptionManager
's método getActiveSubscriptionInfoList()
. Más detalles en Android Docs.
Sería mejor mencionar la versión de SDK que se menciona en la respuesta. Cuando se ve esta respuesta después de muchos años, la declaración hecha puede inducir a error. – Narayanan
¡Desde Android 5.2 en adelante, Android comenzó a admitir teléfonos móviles de simulación múltiple! – Saty
hay varias maneras de detectar dual sim a través de la reflexión de java, sí oficialmente no es posible, pero en la mayoría de los casos hay algunos hacks, ver: http://stackoverflow.com/questions/14517338/android-check-whether-the-phone -is-dual-sim –
Bueno, esto no es a prueba de tontos. Pero si usted tiene dos tarjetas SIM que se encuentran en dos operadores de redes diferentes que puede intentar algo como esto:
PhoneServiceStateListener listener = new PhoneServiceStateListener(this);
tm.listen(listener, PhoneStateListener.LISTEN_SERVICE_STATE);
.
.
.
class PhoneServiceStateListener extends PhoneStateListener {
Context context = null;
public PhoneServiceStateListener(Context context) {
this.context = context;
}
public PhoneServiceStateListener() {
}
@Override
public void onServiceStateChanged(ServiceState serviceState) {
if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) {
//You get this event when your SIM is in service.
//If you get this event twice, chances are more that your phone is Dual SIM.
//Alternatively, you can toggle Flight Mode programmatically twice so
//that you'll get service state changed event.
}
super.onServiceStateChanged(serviceState);
}
}
Lo ideal es que vaya a recibir un estado de servicio cambia SIM evento tanto para las tarjetas SIM y luego se puede comprobar por la red el nombre del operador o algo así para verificar si tienes dos tarjetas SIM. Pero necesita tener dos tarjetas SIM ejecutándose en dos redes diferentes.
¿Cómo puede discernir qué tarjeta SIM está activa? – gonzobrains
@gonzobrains: Ups, gracias por informarnos. Actualizado la respuesta. – Rajkiran
A partir de ahora, si el teléfono es alimentado por MTK, puede utilizar la clase TelephonyManagerEx desde MediaTek SDK.
Eche un vistazo a the docs.
Ostensiblemente [bcm_ds branch] (https://code.google.com/p/android/issues/detail?id=14799#c26) o MediaTek SDK para ser estándar en [Android One] (https: //en.wikipedia .org/wiki/Android_One). Ambos [agregue el] (https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/b09babbf321c225b14abb013a6e1ed7041c45d06/src/com/android/providers/telephony/SmsProvider.java#275) 'SmsManager.getDefault (slotId) 'API. Lanzado simultaneamente el estándar dual sim en Android One y MediaTek SDK y son socios. Mejora [cerrado "obsoleto"] (https://code.google.com/p/android/issues/detail?id=14799#c27). –
Sí esto es muy útil –
final SubscriptionManager subscriptionManager = SubscriptionManager.from(getApplicationContext());
final List<SubscriptionInfo> activeSubscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();
int simCount = activeSubscriptionInfoList.size();
btnBack.setText(simCount+" Sim available");
Log.d("MainActivity: ","simCount:" +simCount);
for (SubscriptionInfo subscriptionInfo : activeSubscriptionInfoList) {
Log.d("MainActivity: ","iccId :"+ subscriptionInfo.getIccId()+" , name : "+ subscriptionInfo.getDisplayName());
}
- 1. ¿Cómo obtener números de teléfono móvil si mi teléfono Android tiene dos tarjetas SIM?
- 2. ¿Cómo determinar el número de tarjetas SIM en un dispositivo?
- 3. Tarjeta SIM Dual Android
- 4. Android LEER TELÉFONO ESTADO?
- 5. Cómo supervisar el cambio de estado SIM
- 6. Dual Sim Android
- 7. cómo comenzar con la tarjeta java en las tarjetas SIM
- 8. notificación de barra de estado en el teléfono Android
- 9. Cómo obtener el saldo de la cuenta de la tarjeta SIM en el teléfono Android
- 10. Android tarjeta SIM dual API
- 11. ¿Detecta cambio de tarjeta SIM o encuentra IMSI de la tarjeta SIM usando el SDK oficial de iOS?
- 12. ¿Detecta cambios de estado realizados en BluetoothAdapter?
- 13. Android Administrador de teléfonos para detectar sim
- 14. dual sim android sdk
- 15. Cómo simular una tarjeta SIM para Android
- 16. ¿Cómo obtener el número de teléfono del teléfono en el código de Android?
- 17. Android: ¿detecta el brillo (cantidad de luz) en el entorno del teléfono usando la cámara?
- 18. ¿Es posible escribir un receptor de emisión Android que detecta cuándo se activa el teléfono?
- 19. ¿Cómo obtengo el estado de una llamada saliente en un teléfono Android?
- 20. Android: detecta el evento de desbloqueo del teléfono, no la pantalla en
- 21. ¿La información de inicio de sesión APN está almacenada en tarjetas SIM?
- 22. ¿Detecta si el usuario interactúa con el teléfono?
- 23. Cómo leer tarjetas pasivas RFID con Android?
- 24. Detecta falta de auricular (solo altavoz) en un dispositivo Android
- 25. ¿Qué devuelve getLine1Number() con dos teléfonos SIM?
- 26. Android - ¿Detecta el teclado visible?
- 27. Android: cómo agregar un contacto a la SIM usando el SDK?
- 28. androide SIM
- 29. Gmail Sync en el teléfono Android
- 30. Desactivando programáticamente el teléfono Android
[Aquí es una solución completa para lo que busca] (http://stackoverflow.com/a/17499889/703851) –
uso Try biblioteca Multisim: http://stackoverflow.com/a/41544422/1665964 –