1

現在、アプリの通知をいくつか行っています。これで通知が正常に作成されましたが、問題は、各通知がクリック時に異なるエクストラを渡さないことです。

何が起こるかというと、ループごとに createNotification メソッドを呼び出すループしかなく、通知が別のスタックに表示されるように別の ID を割り当てることです。

ここに私のコードがあります:

private void createNotification(String record_name, String file_path, String status, int id) {
        /*must pass:
        * record_name, (get the record name in DB using the id create a new query method)
        * record_status, (simple part just match if equivalent to ready to download for the JSON data then show notif if true)
        * record_path *full path* (this one can be get using the record name itself add the path and extension name)*/

        /*this will jump from the current activity into the target activity class just do some workarounds here*/
        Intent intent = new Intent(this, RecordEditActivity.class);
        intent.putExtra("record_name", record_name);
        intent.putExtra("record_path", file_path);
        intent.putExtra("record_status", status);
        PendingIntent pIntent = PendingIntent.getActivity(this,0, intent, 0); 


        /*build the notification here this is only supported for API 11. Since we've targeted API 11 there will be no problem on this*/
        NotificationCompat.Builder notify = new NotificationCompat.Builder(this)
                .setContentTitle(record_name + " is ready for download")
                .setContentText("Click to view or download recording")
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.notif_icon)
                .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher))
                .setTicker("Echo: your file is ready for download")
                .setContentIntent(pIntent); 


        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        if(Build.VERSION.SDK_INT<16){
            /*build notification for HoneyComb to ICS*/
            notificationManager.notify(id, notify.getNotification());
        }if(Build.VERSION.SDK_INT>15){
            /*Notification for Jellybean and above*/
            notificationManager.notify(id, notify.build());
        }

    }

PendingIntentこれにはどのフラグを使用すればよいかわからないため、問題はその部分にあると思いますが、それについてはよくわかりません。

4

2 に答える 2

4

とった!必要なのは、pendingIntentrequestCode に ID を割り当てることです。私が行ったことは、notificationManager に使用したのと同じ ID を割り当てることです。

詳細はこちら

于 2013-08-07T06:08:12.030 に答える
0

この1行のコードを使用するだけです-

PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

詳細については、この回答を参照してください: GCM android Push Notification shows old message always. インテントの受信が正しくない

于 2013-08-07T05:03:15.283 に答える