1

現在、コードをテストして、通知が正しく設定されていることを確認しようとしています。私がそれをしている方法は、1分間隔で通知を表示する3つの異なるアラームを設定することです。しかし、問題は、1つは機能しますが、他の2つは表示されないことです。私のコード:


String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);

    Notification.Builder builder = new Notification.Builder(context)
                                    .setTicker(intent.getStringExtra("event")+"-"+intent.getStringExtra("location"))
                                    .setWhen(System.currentTimeMillis())
                                    .setContentTitle(intent.getStringExtra("event"))
                                    .setContentText(intent.getStringExtra("time_start")+"-"+intent.getStringExtra("location"))
                                    .setSmallIcon(R.drawable.ic_launcher);
    Notification notification = builder.getNotification();
    mNotificationManager.notify(intent.getIntExtra("id", 0),notification);

取得するインテントの余分な「id」は数値の増分であるため、1、2、3のようになります。を使用してアラームを設定していAlarmManagerます。の最初の引数が一意である限りnotify、通知が表示されると思いましたが、まだ表示されていません。これには何か理由がありますか?前もって感謝します。

4

1 に答える 1

0

NoBugPendingIntentが新しいインスタンスを実際に再作成するのではなく、最後のインスタンスを取得するだけであるという点を少し掘り下げた後、単に言うだけでは不十分であることがわかりましたPendingIntent.FLAG_CANCEL_CURRENTgetBroadcast()それをまたはのいずれかのパラメータとして使用する場合getActivity()、古いものを使用して更新するだけです。渡された古いインスタンスをオーバーライドする代わりに、Intentそれを使用し、エクストラを変更するだけです。しかし、それでも実際には何らかの理由でそれが言っていることを実行しません。少なくとも私の場合、通知を次々にポップアップさせることを目的としており、もちろん時間を除いて、ほとんど同じ余分なものがあります。

だから私は使用intent.setAction("com.example"+System.currentTimeInMillis)することで仕事ができることを知りました。これはIntent完全に差別化するため、新しいものを作成すると、実際には、に関係なく異なるアクションになりPendingIntentます。試行錯誤からの推測に過ぎないので、この私の理論についてもっと詳しく説明することをお勧めします。

于 2012-07-11T06:34:42.113 に答える