2016-04-17 13 views
0

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

1

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.

+0

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? –

+0

Das ist richtig. Erweitern Sie einfach 'WakefulBroadcastReceiver' und fügen Sie Ihren Code in die 'onReceive()' Methode ein. – doubotis

+0

toll, danke nochmal :) –