Eu li muitas postagens e tentei muitas soluções, mas o ponto comum de todas as postagens era que elas estavam desatualizadas e, pelo menos, não consegui encontrar uma solução que funcionasse nas versões mais recentes do Android.
Post 1 , Resultado:
intent.getExtras().getInt("simId", -1)
sempre retorna -1
Post 2 , Resultado: intent.getExtras().getInt("slot", -1)
sempre retorna -1
Post 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));
}
Histórico:
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
exibe os mesmos logs com o mesmo valor 0 para o primeiro SimCard e o segundo SimCard.
Eu também tentei outros posts semelhantes. Nenhum funcionou em novas versões do android!
Existe outra solução que funcione em versões mais recentes do Android (7.0 ou superior)?
java
android
broadcastreceiver
dual-sim
incoming-call
Alireza Noorali
fonte
fonte
intent.getExtras().getInt("item")
<- você não deveria estar usandoitem
em vez de"item"
?"item"
é quase certamente incorreto neste contexto. Como eu disse, tente imprimir o que você tem e não o que você está esperando. Embora toda essa solução pareça um hack, qualquer chave utilizável que você encontrar ainda pode não funcionar em alguns dispositivos.Respostas:
Oficialmente, o único valor documentado fornecido pela intenção é o número de telefone.
Alguns construtores adicionam outros valores como o número do slot sim na intenção, mas isso não é obrigatório. É por isso que existem tantos nomes de chaves de slot possíveis, como os apresentados no post 3 , cada construtor adicionando sua própria implementação.
Também é possível que algum construtor não tenha agregado esse valor em alguns modelos, e esse certamente é o caso do seu modelo. Não há como encontrar esse valor se o construtor não o entregar.
fonte
Se você fez assim, deve funcionar. verifique se o dispositivo de teste é executado no Android 5.1 ou superior. o suporte para dual sim foi adicionado na v 5.1 (confira aqui )
Certifique-se de ter adicionado a permissão abaixo no manifesto
NOTA :
Esses valores não precisam vir o tempo todo. é necessário o suporte do provedor de rede. Leia a documentação aqui
fonte
READ_PHONE_STATE
permissão, mas sempre recebocallingSIM = -1