3

ユーザーがアプリを押すたびに、アプリの特定のアクティビティに移動できるようにすることを希望する通知を表示するサービスがあります。通常、これはユーザーが最後に表示するものですが、常に表示されるとは限りません。

アクティビティが以前に開始された場合は元に戻り、そうでない場合はアプリのタスク内で開いて、アクティビティタスクに追加する必要があります。

また、サービスのロジックによっては、別のアクティビティを対象とするように通知の意図を変更したい場合があります。

それ、どうやったら出来るの?新しい通知を作成して前の通知を却下せずに可能ですか?新しいタスクやアクティビティのインスタンスを作成せずに実行することもできますか?

4

2 に答える 2

1

プラットフォーム バージョン 11 以降、Notification.Builder を使用して通知を作成できます。v4 サポート ライブラリには、同等のクラス NotificationCompat.Builder があります。

通知を送信した後にアクティビティを変更することはできませんが、新しいインテントで通知を更新することはできます。PendingIntent を作成するときは、フラグ FLAG_CANCEL_CURRENT を使用します。新しい通知を送信するときは、NotificationManager.notify() を呼び出すときに既存の通知の ID を使用します。

また、アプリの起動方法にも注意する必要があります。ステータス バー通知ガイドでは、バック スタックの設定方法について説明しています。

于 2012-06-09T00:13:35.740 に答える
1

いいえ、通知を送信した後にアクティビティを変更することはできません。

問題のないタスク スタックでアクティビティを開始できます。こちらのチュートリアルで通知サービスを確認してください。

http://blog.blundell-apps.com/notification-for-a-user-chosen-time/

通知に保留中の意図を設定する必要があります。

        // The PendingIntent to launch our activity if the user selects this notification
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, SecondActivity.class), 0);

        // Set the info for the view that shows in the notification panel.
        notification.setLatestEventInfo(this, title, text, contentIntent);

保留中のインテントが通常のインテント " new Intent(this, SecondActivity.class" を取ることがわかります。特定の動作が必要な場合 (新しいアクティビティを開始する代わりにトップに移動するなど)。このインテントに通常行うようにフラグを追加します。つまり、FLAG_ACTIVITY_REORDER_TO_FRONT (そのようなもの)

于 2012-06-08T20:19:32.250 に答える