我首先要声明,这与其他人通过“警告对话框”收到的“无法添加窗口”错误问题并不相同。此应用程序的作用是在将值添加到Firebase中的某个路径时创建一个通知和警报对话框。我分别测试了通知和警报对话框,并且它们正在工作。即使应用程序在后台运行,我也没有收到任何错误。
当我尝试点击通知以将我带回我的应用程序时,出现了“无法添加窗口”问题。我的应用程序的运行方式是在另一台设备上,按下一个按钮,它将一些值插入Firebase的两条路径下,一条用于通知,另一条用于“警报对话框”。然后,在我当前的设备上,它从那些路径读取以检查它们是否不为空。如果它们不为空,则它将创建一个通知和“警报”对话框。
当前行为:当前正在发生的事情是,通知和警报对话框出现在活动中。只要我在另一个应用程序中,只要我的应用程序在后台,该通知也会弹出。 当我按通知以将我带回我的应用程序时,问题就来了。确实按预期将我带到活动中,但是当将新值插入Firebase时,它给了我“无法添加窗口”错误。
我无法弄清楚为什么会发生此错误,因为“警报”对话框和通知在应用程序中可以正常工作,但是当我使用通知转到应用程序时,出现此错误。 我曾尝试阅读其他StackOverflow答案,以解决相同的“无法添加窗口”错误,但是这些解决方案均不适用于我,因为它们与“警报对话框”的上下文有关,而我的问题在于通知将我带回我的应用。
这是GitHub上的link to my full Java code。 这是我用来创建通知的函数:
private void makeNotification(DatabaseReference databaseReference102, String value) {
// The error occurs when I click on the notification to take me back to the app which is in the code below.
//When I click on the notification, the next time values are aded to Firebase, it gives me the "Unable to Add Window" error.
Intent intent = new Intent(getApplicationContext(), CaretakerAccount.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(), "Channel")
.setSmallIcon(R.drawable.notification)
.setContentTitle("A User Logged In!")
.setContentText(value + " just logged in!")
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(value + " just logged in!"))
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_MAX);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(getApplicationContext());
notificationManager.notify(0, mBuilder.build());
databaseReference102.removeValue();
//Removes the value in the notification path that way the notification is not made repeatedly.
}
任何帮助都将受到赞赏。预先感谢!