So far, you have been using the Toast class to display messages to the user. While the Toast class is
a handy way to show users alerts, it is not persistent. It flashes on the screen for a few seconds and
then disappears. If it contains important information, users may easily miss it if they are not looking
at the screen.
For messages that are important, you should use a more persistent method. In this case, you should
use the Notification Manager to display a persistent message at the top of the device, commonly
known as the status bar (sometimes also referred to as the notification bar). The following Try It
Out demonstrates how.
STEPS
1. Using Eclipse, create a new Android project and name it Notifications.
2. Add a new class file named NotificationView.java to the src folder of the project (see Figure 2-26).
In addition, add a new notification.xml file to the res/layout folder as well.
Figure 2-26
3. Populate the notification.xml file as follows:
<?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=”wrap_content”
android:text=”Here are the details for the notification...” />
</LinearLayout>
4. Populate the NotificationView.java file as follows:
package net.learn2develop.Notifications;
import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle;
public class NotificationView extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.notification);
//---look up the notification manager service---
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
//---cancel the notification that we started
nm.cancel(getIntent().getExtras().getInt(“notificationID”));
}
}
5. Add the following statements in bold to the AndroidManifest.xml file:
<?xml version=”1.0” encoding=”utf-8”?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”net.learn2develop.Notifications”
android:versionCode=”1”
android:versionName=”1.0”>
<application android:icon=”@drawable/icon” android:label=”@string/app_name”>
<activity android:name=”.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”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.DEFAULT” />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion=”9” />
<uses-permission android:name=”android.permission.VIBRATE” />
</manifest>
6. Add the following statements in bold to the main.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” >
<Button
android:id=”@+id/btn_displaynotif”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”Display Notification” />
</LinearLayout>
7. Finally, add the following statements in bold to the MainActivity.java file:
package net.learn2develop.Notifications;
import android.app.Activity;
import android.os.Bundle;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
int notificationID = 1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.btn_displaynotif);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
displayNotification();
}
});
}
protected void displayNotification()
{
Intent i = new Intent(this, NotificationView.class);
i.putExtra(“notificationID”, notificationID);
PendingIntent pendingIntent =
PendingIntent.getActivity(this, 0, i, 0);
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Notification notif = new Notification(
R.drawable.icon,
“ Reminder: Meeting starts in 5 minutes”,
System.currentTimeMillis());
CharSequence from = “System Alarm”;
CharSequence message = “Meeting with customer at 3pm...”;
notif.setLatestEventInfo(this, from, message, pendingIntent);
notif.vibrate = new long[] { 100, 250, 100, 500};
nm.notify(notificationID, notif);
}
}
8. Press F11 to debug the application on the Android Emulator.
9. Click the Display Notification button (see the top left of Figure 2-27) and a notification will appear
on the status bar.
10. Clicking and dragging the status bar down will reveal the notification (see the right of Figure).
11. Clicking on the notification will reveal the NotificationView activity. This also causes the
notification to be dismissed from the status bar.
Displaying Notifications