4

これで3時間遊んで、何が悪いのかわかりません。

private static Notification buildNotification(Context context) {
    NotificationCompat.Builder b = new NotificationCompat.Builder(context);
    b.setContentIntent(PendingIntent.getActivity(
            context, 0, new Intent(context,  MyActivity.class),
                PendingIntent.FLAG_UPDATE_CURRENT));
    b.setTicker(context.getString(R.string.update_notification_title));
    b.setContentTitle(context.getString(R.string.update_notification_title));
    b.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.icon));
    b.setSmallIcon(R.drawable.icon);
    b.setOngoing(true);
    b.setAutoCancel(false);
    b.setProgress(100, 0, true);

    Intent cancel = new Intent(context,  Updater.class);
    cancel.putExtra(EXTRA_CANCEL, true);
    b.addAction(
            R.drawable.discard_holo_dark,
            context.getString(R.string.ui_cancel),
            PendingIntent.getService(context, 0, cancel, PendingIntent.FLAG_UPDATE_CURRENT));
    return b.build();
}

JellyBean でもデフォルトの NotificationBuilder を試しました。また、PendingIntent を getActivity に変更しようとしており、アイコンとテキストも置き換えようとしています。進行せず、autoCancel を使用して、setOngoing(false) を試行しました。ボタンによる運の変化はまだありません。4つの異なるデバイスで試しました。

4

6 に答える 6

11

NotificationCompat.Builder は、Android < 4.1 ではアクションを表示しません

一部のデバイスでは、複数の通知がある場合、アクションを含む通知が折りたたまれて表示されます。2 つのポインター ジェスチャで通知を下にスワイプすると、アクションが展開されます。

于 2012-12-24T13:36:29.337 に答える
2

デバッグ モードがオンで、Samsung Galaxy Note II (4.1.2) が PC スロー USB (Eclipse ADT で開発) に接続されている場合、通知アクション ボタンが表示されないことをテストしました (.addAction を使用)。代わりに、デバイスが接続されていなくても、デバッグ モードが有効になっているかどうかにかかわらず、アクション ボタンが実際に表示されます。理由はわかりません。

これをテストするためのテスト アプリは、私のデバイスの問題を破棄するのに非常に役立ちました。これは、GitHubのソース コードを使用して Google Play で入手できる「Jelly Bean Notification Test」です。その作成者に感謝します。

このアプリは、通知アクション ボタンを表示する Samsung Galaxy SIII でもテストされています。このデバイスはデバッグ モードがオフになっていて、開発用の PC に接続されていないことに注意してください。

于 2013-04-19T09:01:46.560 に答える
2

実際にはいくつかの答えがあると思いますが、すべて真実です。

  • Doctoror Drive: 「一部のデバイスでは、複数の通知がある場合、アクションを含む通知が折りたたまれて表示されます。2 つのポインター ジェスチャで通知を下にスワイプすると、アクションが展開されます。」
  • 通知の優先度を高く設定すると、常にボタンが表示され、スワイプして展開する必要がなくなります (上記の例)。

    b.setPriority(Notification.PRIORITY_HIGH); //b.setPriority(NotificationCompat.PRIORITY_HIGH);//this if you're using Compat

  • 上記の誰かが、これはタブレットでは機能しない可能性があると述べました - これが本当かどうかはわかりませんが、必ず検討してテストする必要があります
于 2015-01-17T17:42:24.777 に答える
1

通知ウィンドウに多くの通知がある場合、通知は折りたたまれた状態になり、アクションが非表示になります。他の通知がほとんどまたはまったくない場合、通知は展開される可能性があります。 2

于 2013-11-27T08:37:44.840 に答える
1

この通知を実際にどこで使用しているのかわかりません。に電話する必要がありますNotificationManager#notify()

于 2012-12-21T18:55:21.570 に答える
1

タブレットではボタンが表示されないことがわかりました。サンプルコード「Jelly Bean Notification Test」でも動作は同じです。Samsung P3100 と Nexus7 でテストしました。同じコードが LG P880 などのほとんどの電話で機能します。すべてではありません。Sony Xperia Z などの携帯電話では表示されません。

于 2013-10-28T09:40:20.343 に答える