Skip to main content

Android - Notifications

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.


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; 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());   }}

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>

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>
</resources>

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

Popular posts from this blog

Android - Broadcast Receivers

Broadcast Receivers   simply respond to broadcast messages from other applications or from the system itself. These messages are also called as events or intents. There are following two important steps to make BroadcastReceiver works for the system broadcasted intents − ·         Creating the Broadcast Receiver. ·         Registering Broadcast Receiver A broadcast receiver is implemented as a subclass of   BroadcastReceiver   class and overriding the onReceive() method where each message is received as a   Intent   object parameter. Registering Broadcast Receiver An application listens for specific broadcast intents by registering a broadcast receiver in  AndroidManifest.xml  file. Consider we are going to register  MyReceiver  for system generated event ACTION_BOOT_COMPLETED which is fired by the system once the Android system has completed the boot pr...

Android - How to Customize a Toast in android

Custom Toast In Android : Hello, Today i will teach you about message toast used in android. You can create it with your own design or own functionality. You can also change its position where to show. Watch this video to create custom design of toast in android. If you like my post then please share and like it. Also like video on YouTube. If you have any query you can ask me by commenting on post or video. Thank you.

Introduction To Android

What is Android ? Android is a software platform and Operating System for Mobile Devices. It is based on Linux Kernel. Android is developed by Google in November 2005 by Andy Rubin and later by Open Handset Alliance (OHA). Android allows to write programs in Java language. Also used the concept of C/C++.  Android is designed primarily for touchscreen mobile devices such as smartphones and tablet computers , with specialized user interfaces for televisions ( Android TV ), cars ( Android Auto ), and wrist watches ( Android Wear ). The OS uses touch inputs that loosely correspond to real-world actions, like swiping, tapping, pinching, and reverse pinching to manipulate on-screen objects, and a virtual keyboard . Despite being primarily designed for touchscreen input, it also has been used in game consoles , digital cameras , regular PCs and other electronics.  Android is the most widely used mobile OS and, as of 2013, the highest selling OS overall. Android devices ...