A notification is a message you can display to the
user outside of your application. It first appears as an icon in
the notification area. To see the details of the notification, the user opens
the notification drawer. Both the notification area and the notification drawer
are system-controlled areas that the user can view at any time.
Android Toast class is used for alerts but problem is that these alerts are flashes on the screen for a few seconds and then disappears.
To see the details of the notification, you will have to select the icon
which will display notification drawer having detail about the notification.
While working with emulator with virtual device, you will have to click and
drag down the status bar to expand it which will give you details.
Create and Send Notifications
You can create Notification very simply and easy way. Follow the steps to create Notification in your application.
import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.os.Bundle;import android.view.View;import android.widget.Button; public class MainActivity extends Activity { Button b1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1 = (Button)findViewById(R.id.button); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addNotification(); } }); } private void addNotification() { NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.abc) .setContentTitle("Notifications Example") .setContentText("This is a test notification"); Intent notificationIntent = new Intent(this, MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(contentIntent); // Add as notification NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); manager.notify(0, builder.build()); }}
<TextView
android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Notification Example" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Android Application Blog" android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true" android:layout_marginTop="48dp" />
<ImageButton
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc" android:layout_below="@+id/textView2" android:layout_centerHorizontal="true" android:layout_marginTop="42dp" />
<Button
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Notification"
android:id="@+id/button"
android:layout_marginTop="62dp" android:layout_below="@+id/imageButton" android:layout_centerHorizontal="true" />
</RelativeLayout>
</resources>
Step 1 -
Create Notification Builder
As a first step is to create a notification builder using NotificationCompat.Builder.build(). You will use
Notification Builder to set various Notification properties like its small and
large icons, title, priority etc.
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
Step 2 -
Setting Notification Properties
Once you have Builder object, you can set its Notification properties using Builder
object as per your requirement. But this is mandatory to set at least following
−
·
A small icon, set by setSmallIcon()
·
A title, set by setContentTitle()
·
Detail text, set by setContentText()
mBuilder.setSmallIcon(R.drawable.notification_icon);
mBuilder.setContentTitle("Notification Alert, Click Me!");
mBuilder.setContentText("Hi, This is Android Notification Detail!");
Step 3 -
Attach Actions
This is an optional part and required if you want to attach an
action with the notification. An action allows users to go directly from the
notification to an Activity in your application, where they can look at one or more events or
do further work.
The action is defined by a PendingIntent containing an Intent that starts an Activity
in your application. To associate the PendingIntent with a gesture, call the
appropriate method of NotificationCompat.Builder. For example, if you
want to start Activity when the user clicks the notification text in the
notification drawer, you add the PendingIntent by calling setContentIntent().
Step 4 -
Issue the notification
Finally, you pass the Notification object to the system by calling
NotificationManager.notify() to send your notification. Make sure you call NotificationCompat.Builder.build() method on builder object before notifying it. This method combines
all of the options that have been set and return a new Notification object.
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// notificationID allows you to update the notification later on.
mNotificationManager.notify(notificationID, mBuilder.build());
Following is the content of the modified main activity file src/com.example.notificationdemo/MainActivity.java.
This file can include each of the fundamental lifecycle methods.
package com.example.notificationdemo;
import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.os.Bundle;import android.view.View;import android.widget.Button;
Following will be the content of res/layout/notification.xml file −
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" >
<TextView android:layout_width="fill_parent" android:layout_height="400dp" android:text="Hi, Your Detailed notification view goes here...." /></LinearLayout>
<TextView android:layout_width="fill_parent" android:layout_height="400dp" android:text="Hi, Your Detailed notification view goes here...." /></LinearLayout>
Following is the content of the modified main activity file src/com.example.notificationdemo/NotificationView.java.
package com.example.notificationdemo;
import android.os.Bundle;
import android.app.Activity;
public class NotificationView extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.notification);
}
}
Following will be the content of res/layout/activity_main.xml file −
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="MainActivity"> <TextView
android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Notification Example" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Android Application Blog" android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true" android:layout_marginTop="48dp" />
<ImageButton
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc" android:layout_below="@+id/textView2" android:layout_centerHorizontal="true" android:layout_marginTop="42dp" />
<Button
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Notification"
android:id="@+id/button"
android:layout_marginTop="62dp" android:layout_below="@+id/imageButton" android:layout_centerHorizontal="true" />
</RelativeLayout>
Following will be the content of res/values/strings.xml to define two new constants −
<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="action_settings">Settings</string> <string name="app_name">Notification Demo</string>
Following is the default content of AndroidManifest.xml −
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.notificationdemo" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.notificationdemo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".NotificationView" android:label="Details of notification" android:parentActivityName=".MainActivity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity"/> </activity> </application></manifest>
Now click button,
you will see at the top a message "New Message Alert!" will display
momentarily and after that you will have following screen having a small icon
at the top left corner.
Now lets expand the view, long click on the small icon, after a
second it will display date information and this is the time when you should
drag status bar down without releasing mouse. You will see status bar will
expand and you will get following screen −
Comments
Post a Comment