In android, Notification is a message which is used to alert the users about some events that happening in our app.
Generally, the android Notifications will be displayed outside of our app’s normal UI and alert the users without interrupting their current activities.
In android, we can alert the users about our app notifications in different forms like a flash the LED or make sounds or display an icon in the status bar, etc.
When we tell the system to issue a notification, first it will display an icon in notification bar like as shown below.
To see the details of our android app notification, we need to open the notification drawer like as shown below.
Now we will see how to create and issue notifications in android applications with examples.
Here we are going to use NotificationCompat class to implement notification in our android application. The NotificationCompat class supports different types of notification views, such as normal view, big view and it provides the best support for a wide range of platforms.
To create a notification, we need to specify the UI content and required actions with a NotificationCompat.Builder object. To display an icon, title and detailed text of notification we need to set the following properties in Builder object.
The above-mentioned properties are necessary to display a notification and we can set a different type of properties to our notification like setStyle, setSound, setLights, setLargeIcon, etc. based on our requirements using Builder object.
Following is the example of creating a notification using NotificationCompat.Build object and setting the notification properties.
NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("Sample notification")
.setContentText("Hi, Welcome to Tutlane.com");
If we assign an action to the notification, it will allow users to go directly from the notification to an activity of our app. We can also add buttons to the notification to perform additional actions such as hang up the call or responding immediately to a text message; this feature is available as of Android 4.1.
In android, we can define an action inside of notification by using PendingIntent object which contains an Intent that starts an Activity of our app.
Following is the example of defining an action inside of notification using the PendingIntent object.
NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(this)
…...
Intent resultIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, resultIntent, 0);
nBuilder.setContentIntent(pendingIntent);
Once we are done with creation of notification, we need to pass a notification to the system by using NotificationManager.notify() method and we need to specify a ID in the notification to use this ID to update a notification later if required.
Following is the example of sending a notification to the system using the Notificationmanager.notify method.
Now we will see how to create and show the notification in android application with example.
Following is the example of implementing Notifications in the android application.
Create a new android application using android studio and give names as NotificationExample. In case if you are not aware of creating an app in android studio check this article Android Hello World App.
Now open an activity_main.xml file from \res\layout path and write the code like as shown below
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btnShow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show Notification"
android:layout_marginTop="200dp" android:layout_marginLeft="100dp"/>
</LinearLayout>
If you observe above code we created a one Button control in XML Layout file to show the notification in notification bar when we click on Button.
Once we are done with the creation of layout with required controls, we need to load the XML layout resource from our activity onCreate() callback method, for that open main activity file MainActivity.java from \java\com.tutlane.notificationexample path and write the code like as shown below.
package com.tutlane.notificationexample;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnNotify = (Button)findViewById(R.id.btnShow);
btnNotify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Tutlane Send New Message")
.setContentText("Hi, Welcome to tutlane tutorial site");
// Set the intent to fire when the user taps on notification.
Intent resultIntent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, resultIntent, 0);
mBuilder.setContentIntent(pendingIntent);
// Sets an ID for the notification
int mNotificationId = 001;
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// It will display the notification in notification bar
notificationManager.notify(mNotificationId, mBuilder.build());
}
});
}
}
If you observe above code we are creating a notification, adding action inside of notification using intent object to open the activity in our app and showing notification on Button click using NotificationManager.
Here we added an ic_notification image in the drawable folder to show it as a notification icon so please add a required image in your drawable folder and use it in your application.
Generally, during the launch of our activity, the onCreate() callback method will be called by the android framework to get the required layout for an activity.
When we run the above example using the android virtual device (AVD) we will get a result like as shown below.
If you observe the above result we created notification and shown it on Button click using NotificationCompat.Builder based on our requirements.
We learned how to show the android notification in normal view, in case if we want to show the large icon and large text in a notification, then that can be achieved using NotificationCompat.BigTextStyle.
We need to modify our main activity file MainActivity.java like as shown below.
package com.tutlane.notificationexample;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnNotify = (Button)findViewById(R.id.btnShow);
btnNotify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//To set large icon in notification
Bitmap licon = BitmapFactory.decodeResource(getResources(), R.drawable.notification_icon);
//Assign BigText style notification
NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
bigText.bigText("Welcome to tutlane, it provides a tutorials related to all technologies in software industry. Here we covered complete tutorials from basic to adavanced topics from all technologies");
bigText.setSummaryText("By: Tutlane");
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Big Text Notification Example")
.setLargeIcon(licon)
.setStyle(bigText);
// Set the intent to fire when the user taps on notification.
Intent resultIntent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, resultIntent, 0);
mBuilder.setContentIntent(pendingIntent);
// Sets an ID for the notification
int mNotificationId = 001;
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// It will display the notification in notification bar
notificationManager.notify(mNotificationId, mBuilder.build());
}
});
}
}
If you observe above code we are creating a big text style notification using NotificationCompat.BigTextStyle and appended to notification using setStyle() property.
Here we added an ic_notification, notification_icon (bmp) images in the drawable folder to show it in the notification icon so please add required images in your drawable folder and use it in your application.
When we run the above example using an android virtual device (AVD) we will get a result like as shown below.
If you observe the above result we created a big text style notification with a large image and shown it on Button click based on our requirements.
By using NotificationCompat.InboxStyle object we can implement inbox style notification.
We need to modify our main activity file MainActivity.java like as shown below.
package com.tutlane.notificationexample;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnNotify = (Button)findViewById(R.id.btnShow);
btnNotify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Implement inbox style notification
NotificationCompat.InboxStyle iStyle = new NotificationCompat.InboxStyle();
iStyle.addLine("Message 1.");
iStyle.addLine("Message 2.");
iStyle.addLine("Message 3.");
iStyle.addLine("Message 4.");
iStyle.addLine("Message 5.");
iStyle.setSummaryText("+2 more");
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Inbox Style Notification Example")
.setStyle(iStyle);
// Set the intent to fire when the user taps on notification.
Intent resultIntent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, resultIntent, 0);
mBuilder.setContentIntent(pendingIntent);
// Sets an ID for the notification
int mNotificationId = 001;
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// It will display the notification in notification bar
notificationManager.notify(mNotificationId, mBuilder.build());
}
});
}
}
If you observe above code we are creating a inbox style notification using NotificationCompat.InboxStyle and appended to notification using setStyle() property.
Here we added an ic_notification in the drawable folder to show it in the notification icon so please add required images in your drawable folder and use it in your application.
When we run the above example using the android virtual device (AVD) we will get a result like as shown below.
If you observe the above result we created an inbox style notification and shown it on Button click based on our requirements.
By using NotificationCompat.BigPictureStyle object we can implement inbox style notification.
We need to modify our main activity file MainActivity.java like as shown below.
If you observe above code we are creating a inbox style notification using NotificationCompat.BigPicture and appended to notification using setStyle() property.
Here we added an ic_share, big_img images in a drawable folder to show it in the notification so please add required images in your drawable folder and use it in your application.
When we run the above example using the android virtual device (AVD) we will get a result like as shown below.
If you observe the above result we created a big picture style notification and shown it on Button click based on our requirements.
This is how we can create and show the notifications in android applications based on our requirements.