androidnotificationsandroid-notificationsandroid-notification-bar

How to create a notification with NotificationCompat.Builder?


I need to create a simple notification which will be shown in notification bar along with the sound and icon if possible? I also need it to be compatitible with Android 2.2, so i found that NotificationCompat.Builder works with all APIs above 4. If there's a better solution, feel free to mention it.


Solution

  • The NotificationCompat.Builder is the most easy way to create Notifications on all Android versions. You can even use features that are available with Android 4.1. If your app runs on devices with Android >=4.1 the new features will be used, if run on Android <4.1 the notification will be an simple old notification.

    To create a simple Notification just do (see 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
    

    You have to set at least smallIcon, contentTitle and contentText. If you miss one the Notification will not show.

    Beware: On Gingerbread and below you have to set the content intent, otherwise a IllegalArgumentException will be thrown.

    To create an intent that does nothing, use:

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

    You can add sound through the builder, i.e. a sound from the RingtoneManager:

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

    The Notification is added to the bar through the NotificationManager:

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