Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding button action in custom notification

I have made custom notification and there is a button in that, I want to perform two different functionalities on notification and button click. I look at many links but couldn't find the way to add button listener.

Can anyone help. Here is my code. Thanks a lot.

 private void startNotification() {     Intent intent;     PendingIntent pIntent;     RemoteViews remoteViews = new RemoteViews(getPackageName(),             R.layout.mynotification);      Context context = getApplicationContext();     NotificationCompat.Builder builder = new NotificationCompat.Builder(             this).setSmallIcon(R.drawable.ic_launcher).setContent(             remoteViews);      if (hasFlash) {         intent = new Intent(context, FlashLight.class);         pIntent = PendingIntent.getActivity(context, 1, intent, 0);     } else {         intent = new Intent(context, BlankWhiteActivity.class);         pIntent = PendingIntent.getActivity(context, 1, intent, 0);     }     builder.setContentIntent(pIntent);     NotificationManager mNotificationManager = (NotificationManager)      getSystemService(Context.NOTIFICATION_SERVICE);      Notification notif = builder.setContentTitle("Flashlight")             .setContentText("Lighten your world!!!").build();     mNotificationManager.notify(1, notif);      remoteViews.setOnClickPendingIntent(R.id.closeOnFlash, pIntent);  } 

I have passed the button id (closeOnFlash) in setOnClickPendingIntent don't know why its not working.

And here is my xml:

<?xml version="1.0" encoding="UTF-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:gravity="center"  android:orientation="horizontal"  android:weightSum="100" >  <ImageView     android:id="@+id/notifiation_image"     android:layout_width="0dp"     android:layout_height="wrap_content"     android:layout_weight="30"     android:contentDescription="@string/appImage"     android:src="@drawable/ic_launcher" />  <TextView     android:id="@+id/appName"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_weight="50"     android:gravity="center"     android:text="@string/flashLightOn"     android:textAppearance="?android:attr/textAppearanceMedium" />  <Button     android:id="@+id/closeOnFlash"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_weight="20"     android:text="@string/close" /> 

like image 919
Syed Raza Mehdi Avatar asked Feb 21 '14 05:02

Syed Raza Mehdi


People also ask

How to add action Button in notification in android?

Adding an action button: It is similar to setting the tap action by creating a pending intent only change is that we set it using addAction() to attach it to the notification.


1 Answers

Start notification as:

private void startNotification(){     String ns = Context.NOTIFICATION_SERVICE;     NotificationManager notificationManager =              (NotificationManager) getSystemService(ns);      Notification notification = new Notification(R.drawable.ic_launcher, null,              System.currentTimeMillis());      RemoteViews notificationView = new RemoteViews(getPackageName(),             R.layout.mynotification);      //the intent that is started when the notification is clicked (works)     Intent notificationIntent = new Intent(this, FlashLight.class);     PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this, 0,              notificationIntent, 0);      notification.contentView = notificationView;     notification.contentIntent = pendingNotificationIntent;     notification.flags |= Notification.FLAG_NO_CLEAR;      //this is the intent that is supposed to be called when the      //button is clicked     Intent switchIntent = new Intent(this, switchButtonListener.class);     PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 0,              switchIntent, 0);      notificationView.setOnClickPendingIntent(R.id.closeOnFlash,              pendingSwitchIntent);      notificationManager.notify(1, notification); }   public static class switchButtonListener extends BroadcastReceiver {     @Override     public void onReceive(Context context, Intent intent) {         Log.d("Here", "I am here");         FlashOnOff flashLight;         flashLight = new FlashOnOff();         flashLight.flashLightOff();         flashLight.releaseCamera();              } } 

xml used:

<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="horizontal" android:weightSum="100" >  <ImageView     android:id="@+id/notifiation_image"     android:layout_width="0dp"     android:layout_height="wrap_content"     android:layout_weight="30"     android:contentDescription="@string/appImage"     android:src="@drawable/ic_launcher" />  <TextView     android:id="@+id/appName"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_weight="50"     android:gravity="center"     android:text="@string/flashLightOn"     android:textAppearance="?android:attr/textAppearanceMedium" />  <Button     android:id="@+id/closeOnFlash"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_weight="20"     android:text="@string/close" /> 

In manifest under Application tag:

<receiver android:name="FlashLight$switchButtonListener" /> 
like image 55
Syed Raza Mehdi Avatar answered Oct 04 '22 07:10

Syed Raza Mehdi