gpt4 book ai didi

java - 执行Notification.addAction()中的函数,而不是pendingIntent。是否可以?

转载 作者:行者123 更新时间:2023-12-01 21:26:40 25 4
gpt4 key购买 nike

我希望在按下通知上的按钮时执行一个方法。为此,我将带有 PendingIntent 的操作添加到我的通知中:

Intent intent = new Intent(context, AlertActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

Notification notification = new Notification.Builder(MainActivity.this)
.setContentTitle("New Notification")
.setContentText("Click Here")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(pendingIntent)
.addAction(R.mipmap.ic_launcher, "Test2", pendingIntent)
.build();
notification.flags |= Notification.FLAG_AUTO_CANCEL;

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(0, notification);

这可行,但是我不想在用户调用该操作时启动Activity。我只需要做一些工作。

为此,我实现了一个Service,它应该由PendingIntent作为目标:

public class MyServices extends IntentService {
public MyServices() {
super("MyServices");
}

@Override
protected void onHandleIntent(Intent intent) {
clearNotification();
}

public void clearNotification() {
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancel(0);
Intent intent = new Intent(MyServices.this, MainActivity.class);
//Starting new activity just to check
startActivity(intent);
}
}

我像这样创建PendingIntent:

final Intent intent = new Intent(context, MyServices.class);
final PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);

但是,当我调用通知上的操作时,什么也没有发生。我做错了什么?

最佳答案

通知不是您申请的一部分。它由操作系统管理。碰巧的是,您可以使用 API 来显示/取消/等通知。

挂起的 Intent 允许外部代码(例如通知)启动您的应用程序/Activity/服务/广播接收器。如果没有未决 Intent ,则无法完成此操作。

What my task is to execute some piece of code when a specific action button is clicked, and clear notification; without starting any activity

您不必开始 Activity 。您可以在没有 UI 的广播接收器中执行此操作。或者,正如 CommonsWare 建议的那样,使用 IntentService,具体取决于您在“代码段”中执行的操作。 IntentServices 在单独的线程中处理工作。

关于java - 执行Notification.addAction()中的函数,而不是pendingIntent。是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38075042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com