21

こんにちは私は自分のアクティビティの通知を表示することができました。ユーザーが通知をクリックすると、アプリが再起動します。ただし、再起動せずに再表示したいだけです。例えば。これはWebアプリであり、ユーザーが通知を選択したときに前面に表示されるようにしたいのですが、Webページを更新しないでください。このインテントをトラップできますか、それとも間違ったインテントを送信しますか?通常、ホームボタンを押してアプリアイコンをクリックすると、アプリが前面に表示され、更新/再起動しません。これが私が望む振る舞いです。何か案は ?

 String ns = Context.NOTIFICATION_SERVICE;
 NotificationManager mNotificationManager = (NotificationManager)
                                             getSystemService(ns);
 //2.Instantiate the Notification
 int icon = R.drawable.notification_icon;
 CharSequence tickerText = "My App";  // temp msg on status line 
 long when = System.currentTimeMillis();
 Notification notification = new Notification(icon, tickerText, when);
 notification.flags |= Notification.FLAG_ONGOING_EVENT;
 //3.Define the Notification's expanded message and Intent: 
 Context context = getApplicationContext();
 CharSequence contentTitle = "Notification";
 CharSequence contentText = "My app!"; // message to user
 Intent notificationIntent = new Intent(this, HelloAndroid2.class);
 PendingIntent contentIntent = PendingIntent.getActivity(this, 0, 
                                                          notificationIntent, 0);
 notification.setLatestEventInfo(context, contentTitle, contentText,
                                                          contentIntent);
 //4.Pass the Notification to the NotificationManager:  
 final int NOTIFICATION_ICON_ID = 1;
 mNotificationManager.notify(NOTIFICATION_ICON_ID, notification);
4

6 に答える 6

33

これをマニフェストに入れました

android:launchMode="singleInstance"

これで問題は解決しました。また、私が試したことのないこの回答は、他の興味深いことをほのめかしています。

于 2011-04-11T13:14:09.493 に答える
13

アクティビティを「singleInstance」に設定しないようにする必要がある場合は、通知の意図を次のように設定します。

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
于 2011-10-10T16:28:46.203 に答える
5

このFLAG_ACTIVITY_REORDER_TO_FRONTを試すことができます(ドキュメントには、必要なものが正確に記述されています)

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT

Intent notificationIntent = new Intent(this, HelloAndroid2.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
于 2011-04-09T13:28:37.880 に答える