J'essaie de créer une application pour surveiller les messages SMS entrants et de lancer un programme via SMS entrants, il doit également lire le contenu du SMS.
Flux de travail:
- SMS envoyé à un appareil Android
- Application auto-exécutable
- Lire les informations SMS
android
sms
android-service
iShader
la source
la source
Réponses:
Remarque: dans votre fichier manifeste, ajoutez le BroadcastReceiver-
Ajoutez cette autorisation:
la source
SMS_RECEIVED
diffusion en 4.4+, et, maintenant que cette diffusion ne peut pas être annulée, elle est plus sûre que dans les versions précédentes.Notez que sur certains appareils, votre code ne fonctionnera pas sans Android: priority = "1000" dans le filtre d'intention:
Et voici quelques optimisations:
Remarque :
la valeur doit être un entier, tel que «100». Les nombres plus élevés ont une priorité plus élevée. La valeur par défaut est 0. La valeur doit être supérieure à -1000 et inférieure à 1000.
Voici un lien.
la source
android:priority
ne peut pas être supérieur à1000
(ou inférieur à-1000
).@Mike M. et moi avons trouvé un problème avec la réponse acceptée (voir nos commentaires):
Fondamentalement, il ne sert à rien de passer par la boucle for si nous ne concaténons pas le message en plusieurs parties à chaque fois:
Notez que nous venons de définir
msgBody
la valeur de chaîne de la partie respective du message, quel que soit l'index sur lequel nous nous trouvons, ce qui rend le point entier de la boucle à travers les différentes parties du message SMS inutile, car il sera simplement défini sur le très dernière valeur d'index. Au lieu de cela, nous devrions utiliser+=
, ou comme Mike l'a notéStringBuilder
:Dans l'ensemble, voici à quoi ressemble mon code de réception de SMS:
Il suffit de mettre cette réponse au cas où quelqu'un d'autre aurait la même confusion.
la source
C'est ce que j'ai utilisé!
la source
Si vous souhaitez gérer l'intention sur l'activité ouverte, vous pouvez utiliser PendintIntent (Suivez les étapes ci-dessous):
manifeste:
onNewIntent:
autorisations:
la source
Si quelqu'un se réfère à la même fonctionnalité (lecture d'OTP à l'aide de SMS reçus) sur Xamarin Android comme moi:
Ajoutez ce code à votre fichier AndroidManifest.xml:
Créez ensuite votre classe BroadcastReveiver dans votre projet Android.
Enregistrez cette classe BroadcastReceiver dans votre classe MainActivity sur Android Project:
la source
Merci à @Vineet Shukla (la réponse acceptée) et @Ruchir Baronia (a trouvé le problème dans la réponse acceptée), voici le
Kotlin
version:Ajouter une autorisation:
Enregistrez BroadcastReceiver dans AndroidManifest:
Ajouter une implémentation pour BroadcastReceiver:
Parfois, l'événement se déclenche deux fois alors j'ajoute
mLastTimeReceived = System.currentTimeMillis()
la source
diffusion de l'implémentation sur Kotlin:
Remarque: dans votre fichier manifeste, ajoutez le BroadcastReceiver-
Ajoutez cette autorisation:
la source
La réponse acceptée est correcte et fonctionne sur les anciennes versions d'Android où Android OS demande des autorisations lors de l'installation de l'application.Cependant, sur les versions plus récentes d'Android, cela ne fonctionne pas tout de suite car le système d'exploitation Android plus récent demande des autorisations pendant l'exécution lorsque l'application nécessite cette fonctionnalité . Par conséquent, pour recevoir des SMS sur les nouvelles versions d'Android en utilisant la technique mentionnée dans la réponse acceptée, le programmeur doit également implémenter un code qui vérifiera et demandera les autorisations de l'utilisateur pendant l'exécution. Dans ce cas, la fonctionnalité / le code de vérification des autorisations peut être implémenté dans onCreate () de la première activité de l'application. Copiez et collez simplement en suivant deux méthodes dans votre première activité et appelez la méthode checkForSmsReceivePermissions () à la fin de onCreate ().
la source