Skip to main content

Android Notification Manager - Creating Ongoing Notifications with Action buttons


// Cancel older notification with same id,
NotificationManager notificationMgr = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); notificationMgr.cancel(CALL_NOTIFY_ID);// any constant value // Create Pending Intent, Intent notificationIntent = null; PendingIntent contentIntent = null; notificationIntent = new Intent (context, YourActivityName); contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); // Notification builder builder = new NotificationCompat.Builder(context); builder.setContentText("Ongoing Notification.."); builder.setContentTitle("ongoing notification sample"); builder.setSmallIcon(R.drawable.notification_icon); builder.setUsesChronometer(true); builder.setDefaults(Notification.DEFAULT_LIGHTS); builder.setContentIntent(contentIntent); builder.setOngoing(true); // Add action button in the notification Intent intent = new Intent("action.name"); PendingIntent pIntent = PendingIntent.getBroadcast(context, 1, intent, 0); builder.addAction(R.drawable.action_button_icon, "Action button name",pIntent); // Notify using notificationMgr Notification finalNotification = builder.build(); notificationMgr.notify(CALL_NOTIFY_ID, finalNotification);

Register Broadcast Receiver and listen for the action to handle click event of action button.


Comments

Popular posts from this blog

Launch an Android application on Bootup

If you want to start an android application on device restarts, you need to listen for BOOT_COMPLETED broadcast in the manifest file and launch the Launcher activity in onreceive of BOOT_COMPLETED broadcast receiver. Follow below steps to launch activity on device boot up :- 1. Register for Boot completed receiver in Android Manifest file. Add below Permission to receive BOOT_COMPLETED broadcast, <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> Register for Boot completed broadcast receiver , <receiver android:name="AppAutostartReceiver" android:enabled="true" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 2. Add custom Broadcast receiver in the application, public class AppAutostartReceiver extends BroadcastReceiver { @Override public void onReceive(Context cont

Whitelist an android application on android 6.0/Marshmallow

Whitelist wont disable doze mode for your app, however can use network and hold wake lock. Whitelist an android application through code, boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName()); if(!isIgnoringBatteryOptimizations){   Intent intent = new Intent();   intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);   intent.setData(Uri.parse("package:" + getPackageName()));   startActivityForResult(intent, MY_IGNORE_OPTIMIZATION_REQUEST);   }                             Check for the result, @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {     if (requestCode == MY_IGNORE_OPTIMIZATION_REQUEST) {          PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);          boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());          if(isIgnoringBatteryOptimizations){             // Ignoring battery opti