android 自定义通知崩溃,如果活动崩溃,如何清除Android通知?

本文介绍了如何在Android应用程序发生崩溃时自动清除已显示的通知。首先,通过创建一个新的Android Studio项目开始,然后在activity_main.xml中添加按钮。接着,在MainActivity中编写代码以创建和显示通知,并在CrashHandler类中处理未捕获的异常,确保在应用崩溃时取消通知。最后,更新AndroidManifest.xml以设置自定义的异常处理器。
摘要由CSDN通过智能技术生成

此示例演示有关如何在活动崩溃时清除Android通知

步骤1-在Android Studio中创建一个新项目,转到File⇒New Project并填写所有必需的详细信息以创建一个新项目。

步骤2-将以下代码添加到res / layout / activity_main.xml。 xml version = "1.0" encoding = "utf-8" ?>

xmlns: tools = "http://schemas.android.com/tools"

android :layout_width = "match_parent"

android :layout_height = "match_parent"

android :padding = "16dp"

tools :context = ".MainActivity" >

android :id = "@+id/btnCreateNotification"

android :layout_width = "wrap_content"

android :layout_height = "wrap_content"

android :layout_alignParentStart = "true"

android :layout_alignParentEnd = "true"

android :layout_centerInParent = "true"

android :text = "Create Notification" />

步骤3-将以下代码添加到src / MainActivity。package app.nhooo.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()) ;

}

}

步骤4-将以下代码添加到src / CrashHandler。package app.nhooo.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) ;

}

}

第5步-将以下代码添加到AndroidManifest.xml xml version = "1.0" encoding = "utf-8" ?>

package = "app.nhooo.com.notifyme" >

android :allowBackup = "true"

android :icon = "@mipmap/ic_launcher"

android :label = "@string/app_name"

android :roundIcon = "@mipmap/ic_launcher_round"

android :supportsRtl = "true"

android :theme = "@style/AppTheme" >

点击这里下载项目代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值