我尝试使用下面的代码通过广播接收器启动活动:
Intent i = new Intent(context, AlarmNotification.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // This is at least android 10...
NotificationManager mgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (mgr.getNotificationChannel(CHANNEL_WHATEVER)==null) {
mgr.createNotificationChannel(new NotificationChannel(CHANNEL_WHATEVER,
"Whatever", NotificationManager.IMPORTANCE_HIGH));
}
mgr.notify(NOTIFY_ID, buildNormal(context, i).build());
}
private NotificationCompat.Builder buildNormal(Context context, Intent intent) {
NotificationCompat.Builder b=
new NotificationCompat.Builder(context, CHANNEL_WHATEVER);
b.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setSmallIcon(android.R.drawable.ic_lock_idle_alarm)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(TEXT)
.setContentText(TEXT)
.setFullScreenIntent(buildPendingIntent(context, intent), true);
return(b);
}
private PendingIntent buildPendingIntent(Context context, Intent intent) {
return(PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
}
在开始时,一切都能完美地运行。但是如果我进入应用程序设置,关闭CHANNEL_WHATEVER的通知频道,然后再次打开它。稍后,当我调用NotificationManager.notify时,它会在通知抽屉中显示通知,但不会启动活动。如果我删除应用并重新安装,它又可以正常工作了。这是Android 10的一个错误吗?我应该报告它,还是有什么我可以做的?
IMPORTANCE_HIGH
,则您的症状匹配。 - CommonsWaremgr.getNotificationChannel(CHANNEL_WHATEVER)
的结果,当它不为null
时。调用getImportance()
并记录您看到的值。 - CommonsWare