• Our new service is now live: Lowcost VPN — around €1.20/month + your local tax.

    Learn more >>>

Exibir na aba Ligações qual SIM Card

maxwgod

New member
Vi que existe uma limitação no Android para o "CallScreeningService": no "onScreenCall()" não é disponibilizada diretamente a informação de qual SIM/PhoneAccount recebeu a chamada.

Mas encontrei uma possível alternativa que talvez possa ser explorada pelo CallFilter.

O Android registra no Call Log o "CallLog.Calls.PHONE_ACCOUNT_ID", que identifica a Phone Account utilizada para a chamada. Esse identificador aparentemente pode ser relacionado ao "SubscriptionManager" / "subscriptionId", permitindo determinar posteriormente se a chamada entrou pelo SIM 1 ou SIM 2.

A ideia seria algo como:

"CallScreeningService" → identifica a chamada pelo número → consulta posteriormente o Call Log → obtém "PHONE_ACCOUNT_ID" → relaciona com "SubscriptionManager" → determina SIM 1 ou SIM 2.

Sei que isso provavelmente não permite saber o SIM durante a execução do "onScreenCall()", mas poderia permitir ao CallFilter identificar o SIM depois que a chamada foi registrada.

Vocês já consideraram essa abordagem? Ela poderia ser implementada no CallFilter, considerando as permissões e restrições atuais do Android?

Seria muito útil, principalmente em aparelhos Dual SIM, onde atualmente não é possível distinguir qual linha recebeu a chamada.
 
Vi que existe uma limitação no Android para o "CallScreeningService": no "onScreenCall()" não é disponibilizada diretamente a informação de qual SIM/PhoneAccount recebeu a chamada.

Mas encontrei uma possível alternativa que talvez possa ser explorada pelo CallFilter.

O Android registra no Call Log o "CallLog.Calls.PHONE_ACCOUNT_ID", que identifica a Phone Account utilizada para a chamada. Esse identificador aparentemente pode ser relacionado ao "SubscriptionManager" / "subscriptionId", permitindo determinar posteriormente se a chamada entrou pelo SIM 1 ou SIM 2.

A ideia seria algo como:

"CallScreeningService" → identifica a chamada pelo número → consulta posteriormente o Call Log → obtém "PHONE_ACCOUNT_ID" → relaciona com "SubscriptionManager" → determina SIM 1 ou SIM 2.

Sei que isso provavelmente não permite saber o SIM durante a execução do "onScreenCall()", mas poderia permitir ao CallFilter identificar o SIM depois que a chamada foi registrada.

Vocês já consideraram essa abordagem? Ela poderia ser implementada no CallFilter, considerando as permissões e restrições atuais do Android?

Seria muito útil, principalmente em aparelhos Dual SIM, onde atualmente não é possível distinguir qual linha recebeu a chamada.

Olá!

É uma boa sugestão, obrigado por detalhar a ideia.

Tecnicamente, identificar o SIM depois que a chamada já foi registrada pode ser possível e seria útil para mostrar essa informação no histórico de chamadas.

A minha dúvida é sobre o quanto isso seria útil na prática. Hoje, o pedido mais comum dos usuários com Dual SIM é poder bloquear chamadas apenas em um SIM e deixar o outro sem bloqueio — por exemplo, um SIM pessoal e outro de trabalho.

Nesse caso, descobrir qual SIM recebeu a chamada somente depois que ela terminou não ajudaria a tomar a decisão de bloqueio no momento da chamada.

Você acha que ainda seria útil mostrar essa informação apenas no histórico, mesmo sem poder usá-la para filtrar a chamada em tempo real?
 
Back
Top