当前位置: 首页 > 面试题库 >

Android:当您的应用在后台运行时,在通知上使用AUTO-CANCEL

松烨烨
2023-03-14
问题内容

我在这里查看了所有其他“自动取消”问题,这些问题似乎都包含我没有犯的错误。我都尝试过

builder.setAutoCancel(true);

Notification notif = builder.build();
notif.flags |= Notification.FLAG_AUTO_CANCEL;

都不行。

由于我的最低API为8,因此我正在使用NotificationCompat。这是我的完整代码。在此特定通知中,我并不是在调用意图,因为我不需要用户执行任何操作。

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle(getString(R.string.app_name) + ": my title");
builder.setContentText(message);
builder.setSmallIcon(R.drawable.notification_icon);

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.prog_icon);
builder.setLargeIcon(bitmap);

builder.setAutoCancel(true); // dismiss notification on user click

NotificationManager notiManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
notiManager.notify(MY_NOTI_MANAGER_ID, builder.build());

通知显示完美。您可以滑动以清除它。但是,只需点击它并不会取消该通知。它只是点亮并停留在那里。

我的代码与此处发布的其他代码之间可能存在一些差异:1)我正在使用NotificationCompat(这没有什么区别,但我们之前已经听说过)。2)因为通知很简单,所以我没有意图。

如果您有任何见解,请告诉我。

编辑:我的目的是在不使我的后台应用程序前台的情况下关闭通知。


问题答案:

因此,显然您 确实 需要一个待定的意图。

在Android的通知管理器中,我收到了一个没有意图的通知,我找到了一个解决方案,该解决方案可以将当前活动的应用程序作为待处理的意图(这样,您不必启动自己的活动即可关闭该通知)。

我只添加了以下两行代码(设置自动取消后):

PendingIntent notifyPIntent = 
    PendingIntent.getActivity(getApplicationContext(), 0, new Intent(), 0);     
builder.setContentIntent(notifyPIntent);

效果很好。我想说的是,如果您不希望由于用户单击通知而重新开始活动,那么这是您的最佳选择。



 类似资料:
  • 我正在从google firebase为我的android应用程序发送推送通知,目标是Android5.0: 我的推送通知代码是: 但为什么?这就像当应用程序在后台时,通知不使用活动代码中的设置,而只使用AndroidManifest中的某种“默认”设置。

  • 我的应用程序有推送通知(FCM)。当应用程序在前台运行时,我可以在onMessageReceived()函数中获取数据负载。当应用程序在后台运行或应用程序完全关闭时,不会调用onMessageReceived()函数。我的问题是,当app在后台或关闭时,是否可能获得数据有效载荷? 提前道谢!

  • 我正在使用火力点通知。当应用程序处于前台时,onMessageReceived将被调用,通知与图像一起可见(BigPictureStyle通知)。但是,当应用程序处于Kilded状态时,onMessageReceived将不被调用,而是调用带有标题和描述的基本通知。 我得到的基本通知与标题和主体时,应用程序被杀的状态。当应用程序处于死亡状态时,我如何获取图像???

  • 我试图实现推送通知与反应本机与此插件反应本机推送通知。我成功的是在应用程序运行时收到通知(在前台),但我想做的是在应用程序关闭时收到通知(后台),不运行,当我收到通知进入应用程序时。 我的密码 我正在使用firebase函数发送通知 AndroidManifest。xml 正如我之前所说的,只有当应用程序运行时,当我使用firebase http功能发送时,我才能成功获得通知。我现在只在Andro

  • 问题内容: 关于此主题,有很多stackoverflow线程,但是我仍然 没有找到一个好的解决方案。 如果该应用程序不在后台,则可以签 launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]入 application:didFinishLaunchingWithOptions:呼叫以查看是否已从 通知中打开该应用程序。 如果应用