2016-04-17 8 views
0

私はAndroidで着信SMSを処理することが可能であり、私は初心者でもそれを行うことができると思います。しかし、私の質問です:デバイスがロックされているときにもアプリケーションが実行されますか?私は、デバイスがSMSを受信したときにテキストと送信者の電子メールを特定の電子メールアドレスに送信するアプリケーションに取り組んでいます。しかし、デバイスが数分後にロックされても動作する必要がありますか?それを行う最善の方法は何ですか?また、onRecieveメソッドを使用して既に動作していますか?任意のはちょっと役立つと私はプログラミングにはかなり新しいです親切にしてくださいため ありがとう:DAndroid SMSの受信と処理

答えて

1

それは複雑だ...

とすぐにアプリが一時停止しているよう(つまり、意味:画面に表示されていない)

、それをバッテリーを節約したり、CPU/RAMの使用量を減らすためにAndroidシステムによって破壊される可能性があります。 いいえ、アプリがまだ生きているという保証はありません。

BroadcastReceiverAndroidManifest.xmlに設定し、アプリでBroadcastReceiverクラスを作成できます。 onReceive()メソッドが呼び出され、クラスで設定したコードが実行されます。アプリが現時点では実行されていない場合でも、SMSが受信されます。

しかし、別の問題があります。深い眠りです。バッテリーを節約するために、Androidを長時間使用しないと、バッテリーを必要とするシステムの電源がオフになります。バッテリを大量に消費するシステムには、Wi-Fiとデータがあります。 SMSはこのリストから除外されます(ただし、ディープスリープ時にSMS受信を無効にするオプションが含まれている場合があります。このオプションでは、Deep sleepでSMS受信を無効にしないよう警告します)。

これは、onReceive()メソッドの実装が十分でないことを意味します。 Wi-Fiとデータを有効にするためにデバイスを起動して、電子メールを送信する必要があります。

この問題を回避するには、WakefulBroadcastReceiverを延長してください。これは "通常の"ブロードキャストレシーバーと似ていますが、デバイスを起動し、コードが完全に実行されたときに再びスリープさせます。

+0

すべての情報をありがとう!私を助けてくれて、本当にありがとう!私は自分のビジネスのためだけにこのアプリが必要なので、私は電話で設定をすることができますが、私は必要でした。だから私は深い眠りのSMS受信を無効にしません。 WakefulBroadcastReceiverがこの作業を適切に行うためには、私はあなたにすべきことが正しいのですか? –

+0

それは正しいです。 'WakefulBroadcastReceiver'を拡張して、あなたのコードを 'onReceive()'メソッドの中に入れてください。 – doubotis

+0

素晴らしい、もう一度感謝:) –

関連する問題