gpt4 book ai didi

android通知不会触发BroadcastReceiver onReceive

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:35 26 4
gpt4 key购买 nike

是否可以让通知启动广播接收器?

我试过这段代码,但它不起作用。

通知已创建,但当我点击它时没有任何反应。

注意:当我将 notificationIntent 更改为从 MyBroadcastReceiver.class 指向一个 Activity (如 MainActivity.class)时,它工作正常。

通知创建:

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(
Context.NOTIFICATION_SERVICE);

int notificationIconId = XXXXXX
Notification notification = new Notification(
notificationIconId,
XXXXXX,
System.currentTimeMillis()
);

CharSequence contentTitle = XXXXXXX
CharSequence contentText = XXXXXX

Intent notificationIntent = new Intent(context,MyBroadcastReceiver.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notificationManager.notify(1,notification);

这是广播接收器

public static class MyBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
/*
*/

}
}

在 AndroidManifest.xml 中

<receiver android:name=".MyBroadcastReceiver" />

最佳答案

从你的代码...

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

创建 PendingIntent 时针对 BroadcastReceiver , 你必须使用 getBroadcast(...)而不是 getActivity(...) .

参见 PendingIntent.getBroadcast(Context context, int requestCode, Intent intent, int flags)

此外,不要创建您的 Intent像这样……

Intent notificationIntent = new Intent(context,MyBroadcastReceiver.class);

这是一个明确的 Intent它针对特定的类(通常用于启动特定的 Activity 类)。

而是创建一个“广播”Intent带有“ Action ”,例如...

Intent notificationIntent = new Intent(MyApp.ACTION_DO_SOMETHING);

您还需要指定一个 <intent-filter> <receiver android:name=".MyBroadcastReceiver" /> 部分 list 的一部分。

关于android通知不会触发BroadcastReceiver onReceive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10941037/

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