136

Android に通知を追加するプログラムが必要です。誰かが通知をクリックすると、2 番目のアクティビティに誘導されるはずです。

コードを確立しました。通知は機能しているはずですが、何らかの理由で機能していません。はNotificationまったく表示されません。何が欠けているのかわからない。

これらのファイルのコード:

Notification n = new Notification.Builder(this)
        .setContentTitle("New mail from " + "test@gmail.com")
        .setContentText("Subject")
        .setContentIntent(pIntent).setAutoCancel(true)
        .setStyle(new Notification.BigTextStyle().bigText(longText))
        .build();

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Hide the notification after it's selected

notificationManager.notify(0, n);
4

14 に答える 14

470

コードはアイコンなしでは機能しません。したがって、次のsetSmallIconようにビルダー チェーンへの呼び出しを追加して、動作させます。

.setSmallIcon(R.drawable.icon)

Android オレオ (8.0) 以降

channelIdAndroid 8 では、を使用してプロパティを設定するという新しい要件が導入されましたNotificationChannel

NotificationManager mNotificationManager;

NotificationCompat.Builder mBuilder =
    new NotificationCompat.Builder(mContext.getApplicationContext(), "notify_001");
Intent ii = new Intent(mContext.getApplicationContext(), RootActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, ii, 0);

NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
bigText.bigText(verseurl);
bigText.setBigContentTitle("Today's Bible Verse");
bigText.setSummaryText("Text in detail");

mBuilder.setContentIntent(pendingIntent);
mBuilder.setSmallIcon(R.mipmap.ic_launcher_round);
mBuilder.setContentTitle("Your Title");
mBuilder.setContentText("Your text");
mBuilder.setPriority(Notification.PRIORITY_MAX);
mBuilder.setStyle(bigText);

mNotificationManager =
    (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);

// === Removed some obsoletes
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
{
    String channelId = "Your_channel_id";
    NotificationChannel channel = new NotificationChannel(
                                        channelId,
                                        "Channel human readable title",
                                        NotificationManager.IMPORTANCE_HIGH);
   mNotificationManager.createNotificationChannel(channel);
  mBuilder.setChannelId(channelId);
}

mNotificationManager.notify(0, mBuilder.build());
于 2013-05-08T19:04:13.620 に答える
59

実際、ƒernando Valle による回答は正しくないようです。繰り返しになりますが、何が間違っているか、または機能していないかについて言及していないため、質問は非常に曖昧です。

あなたのコードを見ると、Notification単に表示されていないと思います。

アイコンを提供していないため、通知は表示されていません。SDK のドキュメントでは必須であるとは言及されていませんが、実際には必須であり、必須でないとNotification表示されません。

addAction4.1 以降でのみ使用できます。それ以前は、 を使用してPendingIntentを起動していましたActivity。a を指定しているように見えるPendingIntentので、問題は別の場所にあります。論理的には、それは欠落しているアイコンであると結論付けなければなりません。

于 2013-04-28T09:14:35.197 に答える
35

小さなアイコンがありませんでした。私は同じ間違いをしましたが、上記の手順で解決しました。

公式ドキュメントによると、通知オブジェクトには次のものが含まれている必要があります。

  1. setSmallIcon()によって設定される小さいアイコン

  2. setContentTitle()によって設定されたタイトル

  3. setContentText()によって設定される詳細テキスト

  4. Android 8.0 (API レベル 26) 以降では、 setChannelId()によって設定されるか、チャネルの作成時に NotificationCompat.Builder コンストラクターで提供される有効な通知チャネル ID 。

http://developer.android.com/guide/topics/ui/notifiers/notifications.htmlを参照してください。

于 2015-10-02T03:14:02.017 に答える
16

これは今日私をつまずかせましたが、Android 9.0 (Pie) では、 Android 8.1 (Oreo) 以前のように通知を黙らせるのではなく、デフォルトでサイレント モードがすべての通知を非表示にしているためであることに気付きました。これは通知には適用されません。

私は自分の開発デバイスで DND をオンにするのが好きなので、DND 設定に移動し、設定を変更して、通知を単に無音にする (ただし非表示にしない) と修正しました。

于 2018-10-16T07:59:32.843 に答える
1

忘れていると思います

addAction(int icon, CharSequence title, PendingIntent intent)

こちらをご覧ください:アクションを追加

于 2013-04-16T19:50:38.437 に答える
0

notificationId が一意であることを確認してください。テスト プッシュが表示されない理由がわかりませんでしたが、プッシュ コンテンツに基づいて通知 ID が生成されたためであり、同じ通知を何度もプッシュしていたため、通知 ID は同じままでした。

于 2022-01-31T06:35:53.790 に答える
-2
val pendingIntent = PendingIntent.getActivity(applicationContext, 0, Intent(), 0)

var notification = NotificationCompat.Builder(applicationContext, CHANNEL_ID)
                                    .setContentTitle("Title")
                                    .setContentText("Text")
                                    .setSmallIcon(R.drawable.icon)
                                    .setPriority(NotificationCompat.PRIORITY_HIGH)
                                    .setContentIntent(pendingIntent)
                                    .build()
val mNotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

mNotificationManager.notify(sameId, notification)
于 2021-05-06T13:50:10.780 に答える