How to clear an Android notification if activity crashes?

This example demonstrate about How to clear an Android notification if activity crashes

Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project.

Step 2 − Add the following code to res/layout/activity_main.xml.

 xml version = "1.0" encoding = "utf-8" ?>

   

Step 3 − Add the following code to src/MainActivity.

package app.tutorialspoint.com.notifyme ;
import android.app.NotificationChannel ;
import android.app.NotificationManager ;
import android.app.PendingIntent ;
import android.content.Intent ;
import android.os.Bundle ;
import android.support.v4.app.NotificationCompat ;
import android.support.v7.app.AppCompatActivity ;
import android.view.View ;
public class MainActivity extends AppCompatActivity {
   public static final String NOTIFICATION_CHANNEL_ID = "10001" ;
   private final static String default_notification_channel_id = "default" ;
   @Override
   protected void onCreate (Bundle savedInstanceState) {
      super .onCreate(savedInstanceState) ;
      setContentView(R.layout. activity_main ) ;
   }
   public void createNotification (View view) {
      Intent notificationIntent = new Intent(getApplicationContext() , MainActivity. class ) ;
      notificationIntent.putExtra( "fromNotification" , true ) ;
      notificationIntent.setFlags(Intent. FLAG_ACTIVITY_CLEAR_TOP | Intent. FLAG_ACTIVITY_SINGLE_TOP ) ;
      PendingIntent pendingIntent = PendingIntent. getActivity ( this, 0 , notificationIntent , 0 ) ;
      NotificationManager mNotificationManager = (NotificationManager) getSystemService( NOTIFICATION_SERVICE ) ;
      NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity. this, default_notification_channel_id ) ;
      mBuilder.setContentTitle( "My Notification" ) ;
      mBuilder.setContentIntent(pendingIntent) ;
      mBuilder.setColor(getColor(R.color. colorPrimary )) ;
      mBuilder.setContentText( "Notification Listener Service Example" ) ;
      mBuilder.setSmallIcon(R.drawable. ic_launcher_foreground ) ;
      mBuilder.setAutoCancel( true ) ;
      if (android.os.Build.VERSION. SDK_INT >= android.os.Build.VERSION_CODES. O ) {
         int importance = NotificationManager. IMPORTANCE_HIGH ;
         NotificationChannel notificationChannel = new NotificationChannel( NOTIFICATION_CHANNEL_ID , "NOTIFICATION_CHANNEL_NAME" , importance) ;
         mBuilder.setChannelId( NOTIFICATION_CHANNEL_ID ) ;
         assert mNotificationManager != null;
         mNotificationManager.createNotificationChannel(notificationChannel) ;
      }
      assert mNotificationManager != null;
      mNotificationManager.notify(( int ) System. currentTimeMillis () ,
      mBuilder.build()) ;
   }
}

Step 4 − Add the following code to src/CrashHandler.

package app.tutorialspoint.com.notifyme ;
import android.app.NotificationManager ;
import android.content.Context ;
public class CrashHandler implements Thread.UncaughtExceptionHandler {
   private static final int NOTIFICATION_ID = 12345 ;
   private Thread.UncaughtExceptionHandler defaultUEH ;
   private NotificationManager notificationManager ;
   public CrashHandler (Context context) {
      this . defaultUEH = Thread. getDefaultUncaughtExceptionHandler () ;
      notificationManager = (NotificationManager) context.getSystemService(Context. NOTIFICATION_SERVICE ) ;
   }
   public void uncaughtException (Thread t , Throwable e) {
      if ( notificationManager != null ) {
         try {
            notificationManager .cancel( NOTIFICATION_ID ) ;
         } catch (Throwable ex) {
            ex.printStackTrace() ;
         }
      }
      notificationManager = null;
      defaultUEH .uncaughtException(t , e) ;
   }
}

Step 5 − Add the following code to AndroidManifest.xml

 xml version = "1.0" encoding = "utf-8" ?>

   
   
      
         
            
            
         
      
   

Click  here  to download the project code

Updated on: 2019-07-30T22:30:26+05:30

290 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements