方法は簡単で、PendingIntentを作成しNotificationCompat.Builder.setContentIntent()に渡すだけです。
以下がそのコード。
// まず画面遷移時と同様に、起動するアクティビティのintentを作成。
// putExtra()でデータを渡すことも可能。
Intent intent = new Intent(this, NotificationActivity.class);
intent.putExtra("text", "Notification Activity");
// アクティビティが新しい空のタスクで起動するようにフラグを設定
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// intentからPendingIntentを作成
PendingIntent pendingIntent =
PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
// NotificationCompat.Builder.setContentIntent()に作成したPendingIntentを渡し、
// 通知を表示する。
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_launcher); // 通知ドロワーに表示するアイコンを設定
builder.setContentTitle("notification title");
builder.setContentText("notification text.");
builder.setTicker("notification ticker");
builder.setContentIntent(pendingIntent);
int notifyID = 1;
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(notifyID, builder.build());
※putExtra()で渡したデータは、以下の方法でNotificationActivity内で取得できます。Intent intent = getIntent();
String text = intent.getStringExtra("text");
上記コードによって、通知ドロワーに表示された通知をクリックすると、NotificationActivityが起動します。
ただし、NotificationActivity単独での起動となります。そのため、NotificationActivityでbackボタンを押すと
ホーム画面(または通知ドロワー表示前の画面)に戻ります。
通知の種類によってはこのような動作ではなく、あたかもアプリが起動されていたかのような動作にしたい場合があります(例えばGmailの場合、通知ドロワーをクリックすると受信メッセージが表示されますが、そこでbackボタンを押すと受信トレイが表示されます。この動作はGmailが通常起動されたときと同じ動作ですよね)。
このような場合、backスタックを作成する必要があるのですが、その方法は次回のエントリにて。
0 件のコメント:
コメントを投稿