Leí muchas publicaciones y probé muchas soluciones, pero el punto común de todas las publicaciones fue que todas estaban desactualizadas y al menos no pude encontrar una solución que funcionara en las versiones más recientes de Android.
Publicación 1 , Resultado:
intent.getExtras().getInt("simId", -1)
siempre devuelve -1
Publicación 2 , Resultado: intent.getExtras().getInt("slot", -1)
siempre devuelve -1
Puesto 3 , Resultado:
String[] array = new String[]{
"extra_asus_dial_use_dualsim",
"com.android.phone.extra.slot",
"slot",
"simslot",
"sim_slot",
"subscription",
"Subscription",
"phone",
"com.android.phone.DialingMode",
"simSlot",
"slot_id",
"simId",
"simnum",
"phone_type",
"slotId",
"slotIdx"
};
for (String item :
array) {
Log.i(TAG, "Sim Card - " + item + " -----> " + intent.getExtras().getInt(item));
}
Registros:
PhoneCallReceiver: Sim Card - extra_asus_dial_use_dualsim -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.extra.slot -----> 0
PhoneCallReceiver: Sim Card - slot -----> 0
PhoneCallReceiver: Sim Card - simslot -----> 0
PhoneCallReceiver: Sim Card - sim_slot -----> 0
PhoneCallReceiver: Sim Card - subscription -----> 0
PhoneCallReceiver: Sim Card - Subscription -----> 0
PhoneCallReceiver: Sim Card - phone -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.DialingMode -----> 0
PhoneCallReceiver: Sim Card - simSlot -----> 0
PhoneCallReceiver: Sim Card - slot_id -----> 0
PhoneCallReceiver: Sim Card - simId -----> 0
PhoneCallReceiver: Sim Card - simnum -----> 0
PhoneCallReceiver: Sim Card - phone_type -----> 0
PhoneCallReceiver: Sim Card - slotId -----> 0
PhoneCallReceiver: Sim Card - slotIdx -----> 0
muestra los mismos registros con el mismo valor 0 para la primera SimCard y la segunda SimCard.
También probé otras publicaciones similares. ¡Ninguno funcionó en nuevas versiones de Android!
¿Hay alguna otra solución que funcione en las versiones más recientes de Android (7.0 o superior)?
java
android
broadcastreceiver
dual-sim
incoming-call
Alireza Noorali
fuente
fuente
intent.getExtras().getInt("item")
<- ¿No deberías estar usando enitem
lugar de"item"
?"item"
es casi seguro que es incorrecto en este contexto. Como dije, intente imprimir lo que tiene en lugar de lo que espera. Aunque toda esta solución parece un truco, cualquier clave utilizable que encuentre podría no funcionar en algunos dispositivos.Respuestas:
Oficialmente, el único valor documentado proporcionado por la intención es el número de teléfono.
Algunos constructores agregan otros valores como el número de ranura sim en la intención, pero esto no es obligatorio. Es por eso que hay tantos nombres posibles de claves de ranura, como los presentados en la publicación 3 , cada constructor agrega su propia implementación.
También es posible que algún constructor no agregue este valor en algunos modelos, y ese es ciertamente el caso en su modelo. No hay forma de encontrar este valor si el constructor no lo entrega.
fuente
Si lo has hecho así, debería funcionar. asegúrese de que su dispositivo de prueba se ejecute en Android 5.1 o superior. Se agrega soporte dual sim en v 5.1 (Marque aquí )
Asegúrese de haber agregado el siguiente permiso en manifiesto
NOTA :
Estos valores no necesitan venir todo el tiempo. se requiere soporte de proveedor de red. Lea la documentación aquí
fuente
READ_PHONE_STATE
permiso pero siempre obtengocallingSIM = -1