私は通知を行います。ユーザーが通知をクリックしてクリアすると、保留中のブロードキャストが実行されます。 「setDeleteIntent」と呼ばれるメソッドがあります。このメソッドのドキュメンテーションによると、ユーザが受信通知をクリアすると、保留中のBraodCast Receiverが開始されます。保留中BroadCastReceiverはsetDeleteIntnetを使用して開始しません
私は以下のコードで示すようにBroadcast Receiverクラスを作成し、 'setDeleteIntent'メソッド保留中のブロードキャストで。 実行時に、受信した通知がクリアされると、BroadcastReceiverの 'onReceive'のログメッセージがコンソールに表示されませんでした。
下記のコードを見て、emacにbroadcastReceiverの 'onReceive'が実行されない理由をお知らせください。
注:BroadCasrReceiverは、コードに示すように 'LocalBroadCastReceiver'を使用して登録されました。
コード:
String title = getString(R.string.app_name);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.ic_launcher);
builder.setStyle(new NotificationCompat.BigTextStyle().bigText(msg)).setContentText(msg).setContentTitle(title);
builder.setContentIntent(contentIntent).setAutoCancel(true);
//builder.setWhen(Long.valueOf(eu.man.m24wsapp.utils.gcm.TimeUtils.getNowTS()) + 5000);
builder.setLights(Color.argb(1, 0, 0, 255), 1000, 400);
builder.setOngoing(false);
builder.setAutoCancel(true);
builder.setDeleteIntent(getPendingBroadCast());
((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).notify(NOTIFICATION_ID, builder.build());
....
....
....
//getPendingBroadCast method
private PendingIntent getPendingBroadCast() {
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(new BCRDismissNotification(),
new IntentFilter(BCRDismissNotification.ACTION_DISMISSED_NOTIFICATION));
Intent intent = new Intent(this, BCRDismissNotification.class);
//intent.setAction(BCRDismissNotification.ACTION_DISMISSED_NOTIFICATION);
return PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
}
ブロードキャストレシーバー:
public class BCRDismissNotification extends BroadcastReceiver {
private final static String TAG = BCRDismissNotification.class.getSimpleName();
public final static String ACTION_DISMISSED_NOTIFICATION = "action_dismissed_notification";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "********************* BCR **************");
}
}