如何使用 NotificationCompat.Builder 创建通知?

新手上路,请多包涵

我需要创建一个简单的通知,如果可能的话,它将与声音和图标一起显示在通知栏中?我还需要它与 Android 2.2 兼容,所以我发现 NotificationCompat.Builder 可以与 4 以上的所有 API 一起使用。如果有更好的解决方案,请随时提及。

原文由 Vladimir 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

NotificationCompat.Builder 是在所有 Android 版本上创建 Notifications 的最简单方法。您甚至可以使用 Android 4.1 提供的功能。如果您的应用在 Android >=4.1 的设备上运行,则将使用新功能,如果在 Android <4.1 上运行,则通知将是一个简单的旧通知。

要创建一个简单的通知,只需执行以下操作(请参阅 Android API Guide on Notifications ):

 NotificationCompat.Builder mBuilder =
    new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.notification_icon)
    .setContentTitle("My notification")
    .setContentText("Hello World!")
    .setContentIntent(pendingIntent); //Required on Gingerbread and below

您必须至少设置 smallIconcontentTitlecontentText 。如果您错过了一个通知将不会显示。

注意: 在 Gingerbread 及以下您必须设置内容意图,否则会抛出 IllegalArgumentException

要创建不执行任何操作的意图,请使用:

 final Intent emptyIntent = new Intent();
PendingIntent pendingIntent = PendingIntent.getActivity(ctx, NOT_USED, emptyIntent, PendingIntent.FLAG_UPDATE_CURRENT);

您可以通过构建器添加声音,即来自 RingtoneManager 的声音:

 mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))

通过 NotificationManager 将 Notification 添加到 bar:

 NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(mId, mBuilder.build());

原文由 thaussma 发布,翻译遵循 CC BY-SA 3.0 许可协议

Application Class here 代码在下面

public class App extends Application {
public static final String CHANNEL_1="CHANNEL1";
@Override
public void onCreate() {
    super.onCreate();
    createNotificationChannel();
}

private void createNotificationChannel() {
    NotificationChannel channel=new NotificationChannel(CHANNEL_1,"Channel 1", NotificationManager.IMPORTANCE_HIGH);
    channel.setDescription("This is Channel 1");

    NotificationManager  notificationManager=getSystemService(NotificationManager.class);
    notificationManager.createNotificationChannel(channel);
}

}

在代码下方创建活动显示通知

 NotificationManagerCompat notificationManagerCompat;

    notificationManagerCompat = NotificationManagerCompat.from(this);

    binding.btnNotification.setOnClickListener(v -> {
        Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_1)
                .setSmallIcon(R.drawable.ic_black_24)
                .setContentTitle(getResources().getString(R.string.app_name))
                .setContentText("Message")
                .setPriority(NotificationCompat.PRIORITY_HIGH)
                .setCategory(NotificationCompat.CATEGORY_MESSAGE)
                .build();
        notificationManagerCompat.notify(1, notification);
    });

原文由 Mr.Janardan Borada 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题