Estou tentando criar um aplicativo para monitorar as mensagens SMS recebidas e iniciar um programa via SMS recebida, também deve ler o conteúdo do SMS.
Fluxo de trabalho:
- SMS enviado para o dispositivo Android
- Aplicativo auto-executável
- Leia as informações do SMS
android
sms
android-service
iShader
fonte
fonte
Respostas:
Nota: No seu arquivo de manifesto, adicione o BroadcastReceiver-
Adicione esta permissão:
fonte
SMS_RECEIVED
transmissão em 4.4+ e, agora que essa transmissão não pode ser abortada, é mais certo do que nas versões anteriores.Observe que em alguns dispositivos seu código não funciona sem o android: priority = "1000" no filtro de intenção:
E aqui estão algumas otimizações:
Nota :
O valor deve ser um número inteiro, como "100". Números mais altos têm uma prioridade mais alta. O valor padrão é 0. O valor deve ser maior que -1000 e menor que 1000.
Aqui está um link.
fonte
android:priority
não pode ser maior que1000
(ou menor que-1000
).@Mike M. e eu encontrei um problema com a resposta aceita (veja nossos comentários):
Basicamente, não faz sentido passar pelo loop for se não estivermos concatenando a mensagem de várias partes a cada vez:
Observe que acabamos de definir
msgBody
o valor da string da parte respectiva da mensagem, independentemente do índice em que estamos, o que torna inútil todo o ponto de percorrer as diferentes partes da mensagem SMS, uma vez que ela será ajustada último valor do índice. Em vez disso, devemos usar+=
, ou como Mike observou,StringBuilder
:Em suma, eis a aparência do meu código de recebimento de SMS:
Basta colocar essa resposta no caso de alguém ter a mesma confusão.
fonte
Isto é o que eu usei!
fonte
Caso deseje lidar com a intenção em atividade aberta, você pode usar PendintIntent (etapas completas abaixo):
manifesto:
onNewIntent:
permissões:
fonte
Se alguém se referir a como fazer o mesmo recurso (lendo OTP usando SMS recebido) no Xamarin Android como eu:
Adicione este código ao seu arquivo AndroidManifest.xml:
Em seguida, crie sua classe BroadcastReveiver em seu projeto Android.
Registre esta classe BroadcastReceiver na sua classe MainActivity no Android Project:
fonte
Obrigado a @Vineet Shukla (a resposta aceita) e @Ruchir Baronia (encontrou o problema na resposta aceita), abaixo está a
Kotlin
versão:Adicionar permissão:
Registrar o BroadcastReceiver no AndroidManifest:
Adicione implementação para BroadcastReceiver:
Algum evento dispara duas vezes, então eu adiciono
mLastTimeReceived = System.currentTimeMillis()
fonte
implementação de transmissão no Kotlin:
Nota: No seu arquivo de manifesto, adicione o BroadcastReceiver-
Adicione esta permissão:
fonte
A resposta aceita está correta e funciona em versões mais antigas do Android, nas quais o sistema operacional Android solicita permissões na instalação do aplicativo. No entanto, nas versões mais recentes, o Android não funciona imediatamente porque o sistema operacional Android mais recente solicita permissões durante o tempo de execução, quando o aplicativo exige esse recurso. . Portanto, para receber SMS em versões mais recentes do Android usando a técnica mencionada no programador de respostas aceito, também é necessário implementar o código que verificará e solicitará permissões do usuário durante o tempo de execução. Nesse caso, a verificação da funcionalidade / código pode ser implementada em onCreate () da primeira atividade do aplicativo. Apenas copie e cole seguindo dois métodos em sua primeira atividade e chame o método checkForSmsReceivePermissions () no final de onCreate ().
fonte