应用程序被终止时,Android通知操作按钮不起作用
我正在创建我的第一个android应用程序,这是一个词汇测验。 我尝试每小时发送一次通知(使用PeriodicWorkRequest-WorkManager)。我注意到,当应用程序被终止时,通知会不断发出,但操作按钮不起作用 这是我的Worker类中的发送通知方法:应用程序被终止时,Android通知操作按钮不起作用,android,android-notifications,Android,Android Notifications,我正在创建我的第一个android应用程序,这是一个词汇测验。 我尝试每小时发送一次通知(使用PeriodicWorkRequest-WorkManager)。我注意到,当应用程序被终止时,通知会不断发出,但操作按钮不起作用 这是我的Worker类中的发送通知方法: public void sendNot(Word word, int wordNum) { Intent activityIntent = new Intent(getApplicationContext()
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!"
}
}
尝试查看日志中是否有错误 当应用程序被杀死时,您的所有对象都将被销毁。当您单击您的操作时,它们必须是新实例化的。您可能有一个
NullPointerException
的地方,在正常的生命周期中使用时,对象显然不是null
,但它变成了null,因为您没有在BroadcastReceiver
中再次实例化它,实际上我没有使用json
{
"to": "a6345d0278adc55d3474f5",
"data": {
"message": "Hello World!"
}
}