Ich weiß, dass es möglich ist, eingehende SMS auf Android zu behandeln, und ich denke, dass sogar ich als Anfänger das tun kann. Aber meine Frage ist: Wird die App auch ausgeführt, wenn das Gerät gesperrt ist? Ich arbeite an einer Anwendung, die eine E-Mail mit dem Text und dem Absender an eine bestimmte E-Mail-Adresse sendet, wenn das Gerät eine SMS erhalten hat. Aber es muss auch funktionieren, wenn sich das Gerät nach ein paar Minuten selbst gesperrt hat? Was ist der beste Weg das zu tun oder funktioniert es bereits mit der Methode onRecieve? Vielen Dank für jeden irgendwie helfen und bitte Art, wie ich bin ganz neu in der Programmierung: DAndroid SMS empfangen und handhaben
Antwort
Es ist kompliziert ...
Sobald eine App angehalten (das heißt: nicht auf dem Bildschirm angezeigt wird), es könnte durch das Android-System zerstört werden, um die Batterie zu schonen oder die CPU/RAM-Nutzung zu reduzieren. Also: Nein, Sie haben keine Garantie, dass die App noch am Leben ist.
Sie können eine BroadcastReceiver
zu Ihrem AndroidManifest.xml
und erstellen Sie eine BroadcastReceiver
Klasse in Ihrer Anwendung festgelegt. Die Methode onReceive()
wird aufgerufen und der Code, den Sie in Ihrer Klasse festgelegt haben, wird ausgeführt. Auch wenn die App im Moment nicht läuft, wenn die SMS empfangen wird.
Aber es gibt ein anderes Problem: Deep Sleeping. Um den Akku zu schonen, schaltet Android alle batterielastigen Systeme aus, wenn das Gerät mehrere Stunden nicht benutzt wird. Batterieintensive Systeme umfassen: Wi-Fi und Daten. SMS ist in dieser Liste nicht enthalten (aber einige Konstruktoren enthalten eine Option zum Deaktivieren von SMS-Empfängen, wenn Sie in Deep Sleeping, in diesem Fall haben Sie keine Option, nur den Benutzer warnen, SMS-Empfänge in Deep schlafen nicht deaktivieren).
Das bedeutet die Implementierung der onReceive()
Methode wird nicht ausreichen. Sie müssen das Gerät aufwecken, um WLAN und Daten zu aktivieren, sodass Sie eine E-Mail senden können.
Also, um dieses Problem zu vermeiden, erstreckt sich eine WakefulBroadcastReceiver
. Dies ist wie ein "normaler" Broadcast-Empfänger, aber es wird das Gerät aufwecken und es wieder schlafen lassen, wenn der Code vollständig ausgeführt wird.
- 1. Android - Empfangen langer SMS (mehrteilig)
- 2. Android ICS keine Daten empfangen SMS
- 3. Empfangen von SMS auf Android App
- 4. android: Registrierung Anwendung zum Empfangen von SMS
- 5. Empfangen SMS funktioniert nicht (Java Android)
- 6. Wie Daten senden und empfangen SMS-Nachrichten
- 7. Arduino GSM empfangen SMS
- 8. Java senden und empfangen SMS. Kostenloses SMS-Gateway?
- 9. Empfangen von SMS von SIM
- 10. kann ich "SMS empfangen Absicht" senden?
- 11. Probleme beim Empfangen von SMS in App
- 12. Empfangen einer SMS-Nachricht in Rails-Anwendung (Twilio SMS)
- 13. Senden/Empfangen von SMS mit AT-Befehlen?
- 14. Empfangen von SMS-Nachrichten per Webanwendung
- 15. wie SMS an bestimmten Port zu empfangen ..
- 16. Senden und Empfangen von Text mit Android-Emulator
- 17. Android: SMS senden und im SMS-Posteingang erscheinen lassen?
- 18. Android SMS Content (Inhalt: // SMS/gesendet)
- 19. Destinator Navigationsprogramm und SMS-Ausgabe
- 20. Wie versendet Android SMS und MMS?
- 21. Android & Google Voice - Abhören eingehender SMS-Nachrichten
- 22. Android SMS-Empfänger funktioniert nicht
- 23. SMS-Inhaltsanbieter in Android?
- 24. Android SMS Programmierung
- 25. Android SMS API
- 26. SMS-Versandbericht in Android
- 27. Android SMS Nachrichtenübermittlung Berichtsabsicht
- 28. Hebräisch SMS in Android
- 29. Android-SMS-Bestätigungsdialog
- 30. android RTP senden und empfangen Programm
Vielen Dank für all diese Informationen! Hat mir sehr geholfen, das schätze ich sehr! Ich brauche diese App nur für mein eigenes Geschäft, damit ich die Einstellungen am Telefon vornehmen kann, wie auch immer ich es brauche. Also werde ich den SMS-Empfang in Deep Sleeping nicht deaktivieren. Also habe ich das richtig verstanden, dass ich dir den WakefulBroadcastReceiver empfehlen soll damit das richtig funktioniert? –
Das ist richtig. Erweitern Sie einfach 'WakefulBroadcastReceiver' und fügen Sie Ihren Code in die 'onReceive()' Methode ein. – doubotis
toll, danke nochmal :) –