SMSを(BroadCastReceiver経由で)受信し、着信SMSを処理するアクティビティを開始するアプリがあります(ユーザーに通知するためのサウンドの再生、データベースの更新、ユーザーへのメッセージの表示など)。
問題は、そのアプリが実行されておらず、モバイルがスリープ状態になっている場合があります。画面のロックを解除するとすぐに4つまたは5つのメッセージが表示されます。
編集:BroadcastReceiverの定義:
<receiver
android:name=".util.sms.SmsReceiver"
android:enabled="true" >
<intent-filter android:priority="999" >
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data android:scheme="sms" />
<data android:port="56790" />
</intent-filter>
</receiver>
私の活動の定義:
<activity
android:name=".MyActivity"
android:launchMode="singleInstance">
</activity>
内部活動:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
handleNewMessage(this.getIntent());
}
@Override
public void onNewIntent (Intent intent) {
super.onNewIntent(intent);
handleNewMessage(intent);
}
BroadcastReceiverからMyActivityを開始します。
@Override
public void onReceive(Context context, Intent intent) {
//...
if( smsIsMine() ) {
Intent intent = new Intent();
intent.putExtra("MESSAGE_BODY", sms.getBody());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(context, MyActivity.class);
context.startActivity(intent);
}
}
何か案が?