複数の通知を表示する必要があるアプリを作成しています。私は情報を探していました、そして私はクラスでこのコードを使用します:
Notification noti = new NotificationCompat.Builder(this)
バーに複数の通知を表示できますが、問題は、それをクリックすると最初の通知しか表示されないことです。保留中のインテントが取得するIDは常に同じであるためだと思いますが、別のIDを送信します。
通知アクティビティ:ボタンをクリックすると、新しい通知が表示されます。
import Android.app.Activity;
import Android.app.Notification;
import Android.app.NotificationManager;
import Android.app.PendingIntent;
import Android.content.Intent;
import Android.os.Bundle;
import Android.support.v4.app.NotificationCompat;
import Android.util.Log;
import Android.view.View;
public class NotificationActivity extends Activity {
int notificationID = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification_example);
}
public void onClick(View v){
displayNotification();
}
protected void displayNotification(){
Intent i = new Intent(this, NotificationView.class);
i.putExtra("notificationID", notificationID);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, i, 0);
NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
CharSequence ticker ="Display";
CharSequence contentTitle = "Title";
CharSequence contentText = "Description";
Notification noti = new NotificationCompat.Builder(this)
.setContentIntent(pendingIntent)
.setTicker(ticker)
.setContentTitle(contentTitle)
.setContentText(contentText)
.setSmallIcon(R.drawable.ic_launcher)
.addAction(R.drawable.ic_launcher, ticker, pendingIntent)
.setVibrate(new long[] {100, 250, 100, 500})
.build();
Log.d("Send Notification", "id: "+notificationID);
nm.notify(notificationID, noti);
notificationID++;
}
}
ご覧のとおり、別のIDを送信するためのボタンをクリックするたびにnotificationIDを増やします。
通知ビュー:通知のIDを表示します。
import Android.app.Activity;
import Android.app.NotificationManager;
import Android.os.Bundle;
import Android.widget.TextView;
public class NotificationView extends Activity {
TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.notification);
txt= (TextView) findViewById(R.id.txt1);
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
txt.setText("Notification ID: "+getIntent().getExtras().getInt("notificationID"));
// Cancel notification
nm.cancel(getIntent().getExtras().getInt("notificationID"));
}
}
ここには通知のIDのみが表示されますが、常に1です。
何が起こったのかについて何か考えはありますか? 2.3デバイスでテストしています。
1) PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, i, 0);
..............Your code ........................
nm.notify(1, noti);
2)PendingIntent pendingIntent2 = PendingIntent.getActivity(this, 2, i, 0);
..............Your code ........................
nm2.notify(2, noti);
3)PendingIntent pendingIntent3 = PendingIntent.getActivity(this, 3, i, 0);
..............Your code ........................
nm3.notify(3, noti);
4)................same as above
5)................same as above
問題を解決するために置くだけです:
int num = (int) System.currentTimeMillis();
PendingIntent resultPendingIntent=PendingIntent.getActivity(this,num,resultIntent,Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
mNotificationManager.notify(num, mNotifyBuilder.build());*