codeofaninja
website

Android Notification with Sound and Icon Tutorial

Photo of Mike Dalisay
Modified Saturday, August 10, 2013
by - @ninjazhai
My app needed a simple Android notification with sound and icon. So here's the code I used to make that happen. I know that there are many other types of notification in Android, but this time, I just want to show you a very simple code that can be a solution to your problem too!

I will probably create a series of blog posts regarding Android notifications, and make it like a cheat sheet for all of us. Anyway, here are some screenshots of today's code output:

When you run this code.



When you click the button "Show Notification",
the notification bar will have the ninja icon
and you will hear a sound
(make sure you're not in silent mode).

When you slide down the notification bar.

Download Code


AndroidNotificationBar.zip

Hide Notification


How to hide the notification? There are two ways:

1. First, you can click the "Cancel Notification" button.
2. Or, second, swipe the notification to left or right (swipe the notification in the third image).

These ways were set programatically, so read the code (with comments) below.

Let's Code!


Here's are our awesome code: MainActivity.java

package com.example.androidnotificationbar;

import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // listener handler
        View.OnClickListener handler = new View.OnClickListener(){
            public void onClick(View v) {
                
                switch (v.getId()) {

                    case R.id.btnShowNotification:
                        showNotification();
                        break;
                    
                    case R.id.btnCancelNotification:
                        cancelNotification(0);
                        break;
                }
            }
        };
            
        // we will set the listeners
        findViewById(R.id.btnShowNotification).setOnClickListener(handler);
        findViewById(R.id.btnCancelNotification).setOnClickListener(handler);
        
    }
    
    public void showNotification(){

        // define sound URI, the sound to be played when there's a notification
        Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        
        // intent triggered, you can add other intent for other actions
        Intent intent = new Intent(MainActivity.this, NotificationReceiver.class);
        PendingIntent pIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
        
        // this is it, we'll build the notification!
        // in the addAction method, if you don't want any icon, just set the first param to 0
        Notification mNotification = new Notification.Builder(this)
            
            .setContentTitle("New Post!")
            .setContentText("Here's an awesome update for you!")
            .setSmallIcon(R.drawable.ninja)
            .setContentIntent(pIntent)
            .setSound(soundUri)
            
            .addAction(R.drawable.ninja, "View", pIntent)
            .addAction(0, "Remind", pIntent)
            
            .build();
        
        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        // If you want to hide the notification after it was selected, do the code below
        // myNotification.flags |= Notification.FLAG_AUTO_CANCEL;
        
        notificationManager.notify(0, mNotification);
    }
    
    public void cancelNotification(int notificationId){
        
        if (Context.NOTIFICATION_SERVICE!=null) {
            String ns = Context.NOTIFICATION_SERVICE;
            NotificationManager nMgr = (NotificationManager) getApplicationContext().getSystemService(ns);
            nMgr.cancel(notificationId);
        }
    }
    
}


I also put the ninja icon in our drawable folder, that's the source of our icon.

Please share what Android notification example you want next!
For FREE programming tutorials, click the red button below and subscribe! :)
Thanks for the comments!
 
 
Fundamentals
"First do it, then do it right, then do it better."
~ Addy Osmani
"Talk is cheap. Show me the code."
~ Linus Torvalds
Let's Stay Connected!
g+ r
Android app on Google Play
© 2011-2014 The Code Of A Ninja. All rights reserved. Proudly Powered by Google Blogger. Images, logos, marks or names mentioned herein are the property of their respective owners.