Jerome Dumilieu
Jerome Dumilieu

Reputation: 75

Get Notification Title Android

How could I get the Notification Title of the notification ?

Here's my code :

-From Notification Service :

resultIntent= new Intent(NotificationService.this, StartNAFromNS.class);
                        resultIntent.putExtra(Intent.EXTRA_TITLE, underestood_name.replace("__", " "));

-From StartNAFromNS :

String text = this.getIntent().getStringExtra(Intent.EXTRA_TITLE);

When doing this with only 1 notification, I get the correct title. However, if my application sends 2 notifications, I will get the title of the second notification.

How could I get the proper notification title ?

Upvotes: 4

Views: 11314

Answers (3)

Amit Darji
Amit Darji

Reputation: 457

By extending NotificationListenerService and using its onNotificationPosted method in our class we will be able to get notification title, text and package name. Using notification package we get its app icon, app name and many more.

public class MyNotification extends NotificationListenerService {
    Context context;
    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();
    }
    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
        // We can read notification while posted.
    for (StatusBarNotification sbm : MyNotification.this.getActiveNotifications()) {
            String title = sbm.getNotification().extras.getString("android.title");
            String text = sbm.getNotification().extras.getString("android.text");
            String package_name = sbm.getPackageName();
        Log.v("Notification title is:", title);
        Log.v("Notification text is:", text);
        Log.v("Notification Package Name is:", package_name);
    }
    }
}

Upvotes: 9

Ferdous Ahamed
Ferdous Ahamed

Reputation: 21736

Notification id should be unique within your application.

If a notification with the same id has already been posted by your application and has not yet been canceled, it will be replaced by the updated information.

NotificationManager notiManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);    
notiManager.notify(UNIQUE_ID, notification);

If you are using PendingIntent.getActivity() method, use different requestCode for different notification:

Intent resultIntent= new Intent(NotificationService.this, StartNAFromNS.class);
resultIntent.putExtra(Intent.EXTRA_TITLE, underestood_name.replace("__", " "));    

PendingIntent pI = PendingIntent.getActivity(mContext, REQUEST_CODE, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);

Hope this will help!

Upvotes: 4

Nelson Gnanaraj
Nelson Gnanaraj

Reputation: 176

This code properly working for the fcm. We can send a message and title from the fcm console or server. The notification received by the registered mobile app.

@Override
public void onMessageReceived (String from, Bundle data) {
    //Getting the message from the bundle
long dateTime = data.getLong("google.sent_time");
Bundle notificationBundle = data.getBundle("notification");
    String message = notificationBundle.getString("body");
    String title = notificationBundle.getString("title");

    //Displaying a notiffication with the message
    sendNotification(title, message);
}

//The following method is generating a notification and displaying the notification

private void sendNotification(String title, String message) {
    Intent intent = new Intent(this, MainActivity.class);
    intent.putExtra("message", message);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    int requestCode = 0;
    PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
    NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
            .setContentTitle(title)
            .setContentText(message)
            .setAutoCancel(true)
            .setContentIntent(pendingIntent);

    if (Build.VERSION.SDK_INT >= 21)
        noBuilder.setSmallIcon(R.mipmap.ic_launcher);
    else
        noBuilder.setSmallIcon(R.mipmap.ic_launcher_small);

    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0, noBuilder.build()); //0 = ID of notification
}

Upvotes: 0

Related Questions