1

正しく表示される新しい BigTextStyle 通知をテストしました。ただし、通知にアクションを追加すると、キャンセルされず、アクションをクリックしてもプルダウン通知領域が閉じません。私は何を間違えましたか?

    Drawable d = getResources().getDrawable(android.R.drawable.ic_menu_add);
    Bitmap b = ((BitmapDrawable)d).getBitmap();
    Notification noti = null;

    Intent notificationIntent = new Intent(MainActivity.this, MainActivity.class);

    String s = "Name: John \n"
            + "Surname: Doe\n"
            + "Vehicle: Honda Jazz TA-1234\n"
            + "Note: Good drifter";

    Builder builder = new Notification.Builder(MainActivity.this)
            .setContentTitle("New challenger arrived!")
            .setContentText(s)
            .setSmallIcon(R.drawable.ic_launcher)
            .setLargeIcon(b)
            .setTicker("New challenger arrived!")
            .setPriority(Notification.PRIORITY_HIGH)
            .setAutoCancel(true)
            .setDefaults(Notification.DEFAULT_ALL)
            .setNumber(5)
            .addAction(
                    android.R.drawable.ic_menu_add,
                    "Accept",
                    PendingIntent.getActivity(getApplicationContext(), 0,
                            notificationIntent, 0, null))
            .addAction(
                    android.R.drawable.ic_menu_delete,
                    "Refuse",
                    PendingIntent.getActivity(getApplicationContext(), 0,
                            notificationIntent, 0, null))
            .addAction(
                    android.R.drawable.ic_dialog_map,
                    "Map",
                    PendingIntent.getActivity(getApplicationContext(), 0,
                            notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT, null));

    noti = new Notification.BigTextStyle(builder)
                        .setBigContentTitle("New challenger arrived!")
                        .bigText(s)
                        .setSummaryText("You will never win against me").build();

    NotificationManager nm = (NotificationManager) MainActivity.this
            .getSystemService(Context.NOTIFICATION_SERVICE);

    nm.notify(0, noti);
4

1 に答える 1

0

アクションを起こす場合は、通知を手動でキャンセルする必要があると思います。これは、呼び出すことによって行うことができます

notifMgr.cancel(0); 

通知自体をクリックすると通知が消えるはずですが、何らかの理由でアクションが表示されないようです。引数として 0 を渡す理由は、それが呼び出し時に指定した ID であるためです。

notifMgr.notify(0, noti);

これが私の最新の回答ですが、以前は次のように回答していました。

現在表示されているのと同じアクティビティを (PendingIntent から) 起動しようとしているようです (これは、上記のコードを含む MainActivity を持つ 1 アクティビティ アプリであると想定しています)。別のアクティビティを作成し、PendingIntent を作成してそのアクティビティを起動すると、希望どおりに実行されます。または、アクティビティを実行し、通知が表示され、ホーム画面または別のアプリに移動してから、アクティビティを操作すると、目的の動作がマニフェストされるはずです。

于 2012-11-19T18:48:11.313 に答える