幽沉谢世事,俯默窥唐虞。这篇文章主要讲述Android Oreo中的通知被延迟相关的知识,希望能为你提供帮助。
我正在使用一个在Marshmallow中运行良好的提醒应用程序,但我刚买了一台带有android Oreo的Xperia XZ1小巧,并且通知被延迟或甚至根本没有显示。当提醒的时间响起时,手机什么都不做,但如果我解锁屏幕,则会突然显示通知。根据应用程序的日志,我的广播接收器及时工作并接收警报,然后成功生成通知。但系统推迟显示通知,我不知道原因。我的应用程序已获得所有通知权限,配置为从节电保护程序中忽略,等等。以下是显示通知的代码。正如我所说,这段代码总是及时执行,但通知的声音会延迟一个随机的分钟数,或直到我手动打开屏幕。
有没有什么办法解决这一问题?
private void makeNotification(Long rowId, String title, String body) {
android.app.NotificationManager mgr = (android.app.NotificationManager)context.getSystemService(NOTIFICATION_SERVICE);
Intent notificationIntent;
long notificationId;
PendingIntent pi;
if (rowId == null) {
notificationId = 0;
notificationIntent = new Intent(context, ReminderListActivity.class);
pi = PendingIntent.getActivity(context, 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
} else {
notificationId = rowId;
notificationIntent = new Intent(context, ReminderEditActivity.class);
notificationIntent.putExtra(RemindersDbAdapter.KEY_ROWID, rowId);
long rowIdPrimitive = rowId;
pi = PendingIntent.getActivity(context, (int)rowIdPrimitive, notificationIntent,
PendingIntent.FLAG_ONE_SHOT);
}NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(android.R.drawable.stat_sys_warning)
.setContentTitle(title)
.setContentText(body)
.setContentIntent(pi)
.setStyle(new NotificationCompat.BigTextStyle().bigText(body));
Notification note = mBuilder.build();
note.defaults |= Notification.DEFAULT_SOUND;
note.flags |= Notification.FLAG_AUTO_CANCEL;
// An issue could occur if user ever enters over 2,147,483,647 tasks. (Max int value).
// I highly doubt this will ever happen. But is good to note.
int id = (int)((long)notificationId);
mgr.notify(id, note);
NotificationManager.setNotified(context, id);
}
答案这种情况会发生,但对于Oreo,您不需要提供频道和群组
if (Build.VERSION.SDK_INT >
= Build.VERSION_CODES.O) {
if (LOG_DEBUG) Log.v(TAG, " : version : >
=O ");
NotificationChannel mChannel = new NotificationChannel
(NOTIFICATION_CHANNEL_ID, NOTIFICATION_CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
mChannel.setDescription(NOTIFICATION_CHANNEL_DESCRIPTION);
mChannel.enableLights(true);
mChannel.setLightColor(Color.CYAN);
mChannel.enableVibration(true);
notificationManager.createNotificationChannel(mChannel);
NotificationChannelGroup mGroup = new NotificationChannelGroup(NOTIFICATION_GROUP_ID, NOTIFICATION_GROUP_NAME);
notificationManager.createNotificationChannelGroup(mGroup);
NotificationCompat.Builder builder = new NotificationCompat.Builder
(context, NOTIFICATION_CHANNEL_ID).setContentTitle(context.getString(R.string.notification_title))
.setContentText(context.getString(R.string.notification_subtext))
.setSmallIcon(R.drawable.ic_pawprint)
.setAutoCancel(true)
.setDeleteIntent(piDismiss)
//.setContentIntent(pIpanel)
.setCustomContentView(collapsedView)
.setCustomBigContentView(expandedView)
.setStyle(new NotificationCompat.DecoratedCustomViewStyle());
notification = builder.build();
}if (notificationManager != null) {
notificationManager.notify(NOTIFICATION_ID, notification);
}
【Android Oreo中的通知被延迟】这个完美打击
推荐阅读
- 对于Xamarin Android,我无法处理点击事件的后台通知
- 有没有办法从桌面/服务器盒发送WhatsApp消息()
- Android Studio(带有ARGB的通知LED上的自定义颜色不起作用)
- Xamarin Android - 自定义通知托盘图标(状态栏)
- 所有移动设备制造商的启动器图标上的Android徽章编号
- android firebase通知不起作用
- Onesignal通知显示在OneSignal仪表板上,但未在通知栏中显示(android)
- Android - 构建通知,TaskStackBuilder.addParentStack不能正常工作
- 三星Android 7中未显示通知图标