android - 应用程序被杀死时Android通知操作按钮不起作用
问题描述
我正在创建我的第一个 android 应用程序,它是一个词汇测验。我正在尝试每小时发送一次通知(使用 PeriodicWorkRequest - WorkManager)。我注意到,当应用程序被终止时,通知会不断启动,但操作按钮不起作用。
这是我的 Worker 类中的发送通知方法:
public void sendNot(Word word, int wordNum) {
Intent activityIntent = new Intent(getApplicationContext(), WordStatsActivity.class);
activityIntent.putExtra("word_exists", word);
PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext()
, 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Intent knewBroad = new Intent(getApplicationContext(), MainActivity.NotificationBroadcast.class);
knewBroad.setAction(KNEW_WORD);
knewBroad.putExtra("word", word);
PendingIntent knewIntent = PendingIntent.getBroadcast(getApplicationContext(),
0, knewBroad, PendingIntent.FLAG_UPDATE_CURRENT);
Intent didntKnowBroad = new Intent(getApplicationContext(), MainActivity.NotificationBroadcast.class);
didntKnowBroad.setAction(DIDNT_KNOW_WORD);
didntKnowBroad.putExtra("word", word);
PendingIntent didntKnow = PendingIntent.getBroadcast(getApplicationContext(),
0, didntKnowBroad, PendingIntent.FLAG_UPDATE_CURRENT);
Intent stopShowBroad = new Intent(getApplicationContext(), MainActivity.NotificationBroadcast.class);
stopShowBroad.setAction(NOTIFCATION_OFF);
stopShowBroad.putExtra("word", word);
PendingIntent stopShowIntent = PendingIntent.getBroadcast(getApplicationContext(),
0, stopShowBroad, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_1_ID)
...
.addAction(R.mipmap.ic_launcher, "know", knewIntent)
.addAction(R.mipmap.ic_launcher, "don't know", didntKnow)
.addAction(R.mipmap.ic_launcher, "don't show again", stopShowIntent)
...
.build();
notificationManager.notify(word.getId(), notification);
}
如果您需要更多信息,请告诉我
解决方案
确保在您的推送通知负载中,通知键不能存在。只有数据键将出现在有效负载正文中。
不使用这个(示例)
{
"to": "a6345d0278adc55d3474f5",
"data": {
"message": "Hello World!"
},
"notification": {
"body": "Hello World \u270c",
"badge": 1,
"sound": "ping.aiff"
}
}
而是使用这个(示例):
{
"to": "a6345d0278adc55d3474f5",
"data": {
"message": "Hello World!"
}
}
推荐阅读
- javascript - 嵌套查询在 Node.js 和 MySQL 中不起作用
- c# - 如何在 C# 中向数据库中插入数据
- android - 在传递单击的自定义列表项的数据时单击带有 RecyclerView 的片段的项目时如何打开新活动?
- php - 防止列低于零和回显警告
- c - helloworld 内核模块中的 insmod 错误:模块格式无效
- python-3.x - 分组依据和 values_counts
- r - 使用 devtools 开发 htmlwidgets
- reactjs - 如何在页面加载时为反应应用程序实现动画
- reactjs - 尽管使用 async 和 await ,但数据未定义
- shell - 如何修复 Ubuntu 18.04 中的以下错误?