gpt4 book ai didi

android - 单击通知后调用服务中的方法

转载 作者:行者123 更新时间:2023-12-05 00:09:28 25 4
gpt4 key购买 nike

我有一个通知,我正在从服务中调用它。我想在单击通知时再次调用该服务。但是通知点击无法进入方法内部。

Intent intent = new Intent(this, MyService.class).setAction(ACTION_1);
PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.food)
.setContentTitle("notification")
.setContentText("near by you!");
NotificationManager mNotificationManager =(NotificationManager) getSystemService(Service.NOTIFICATION_SERVICE);

我想调用的方法是
if (ACTION_1.equals(resultPendingIntent)) {
getRecommendation();
}
mBuilder.setContentIntent(resultPendingIntent);
mNotificationManager.notify(id, mBuilder.build());

我尝试了以下链接,但无法解决我的问题。
How to execute a method by clicking a notification

最佳答案

您可以指定 Broadcast在您的 Service并通过 PendingIntent 启动它在您的通知中。

Intent stopIntent = new Intent("my.awersome.string.name");
PendingIntent stopPi = PendingIntent.getBroadcast(this, 4, stopIntent, PendingIntent.FLAG_CANCEL_CURRENT);

然后,在您的通知生成器中:
NotificationCompat.Builder builder;
builder = new NotificationCompat.Builder(context)
...
.setContentIntent(stopPi);

在您的 Service你可以设置一个 BroadcastReceiver作为:
private final BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Code to run
}
};

您注册 receiver在您的 Service (可能在 onStartCommand() 中)仅使用:
registerReceiver(myReceiver, new IntentFilter("my.awersome.string.name"));

您的 Service必须运行才能使其正常工作。

关于android - 单击通知后调用服务中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38761062/

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