我正在尝试制作一个可以定期显示自定义通知的演示。
为此,我使用 Remoteviews 来更新通知的视图。将此通知放入 BroadcastReceiver 的 onReceive 方法中。然后使用 AlarmManager 定期调用它。
除非我的演示应用程序从最近的应用程序中删除,否则一切正常。它是强制崩溃的,当我检查 android 日志时,我看到了这个错误:“发布了错误的通知 - 无法扩展 RemoteViews:StatusBarNotification”
你能帮我解决这个问题吗?
下面是我的代码:
Intent alarmIntent = new Intent(this, PeriodicTaskReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
int interval = 10000;
manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
PeriodicTaskReceiver 是我自定义的 BroadcastReceiver 类:
public void onReceive(Context context, Intent intent) {
repository = new LocalRepository();
Notification(context, repository.getData());
}
}
通知方式:
public void Notification(Context context, Data data) {
// Set Notification Title
String strtitle = context.getString(R.string.notificationtitle);
// Open NotificationView Class on Notification Click
Intent intent = new Intent(context, NotificationView.class);
// Send data to NotificationView Class
intent.putExtra("title", strtitle);
// Open NotificationView.java Activity
PendingIntent pIntent = PendingIntent.getActivity(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews customNotification = buildNotificationItem(data);
// Create Notification using NotificationCompat.Builder
NotificationCompat.Builder builder = new NotificationCompat.Builder(
context)
// Set Icon
.setSmallIcon(R.drawable.icon)
// Set PendingIntent into Notification
.setContentIntent(pIntent)
.setContent(customNotification);
// Create Notification Manager
NotificationManager notificationmanager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = builder.build();
// notification.bigContentView = customNotification;
// Build Notification with Notification Manager
notificationmanager.notify(0, notification);
}
该方法处理我的 Remoteviews 的内容:
private RemoteViews buildNotificationItem(Data data){
RemoteViews view = new RemoteViews(Global.PACKAGE_NAME, R.layout.notification_item);
view.setTextViewText(R.id.notification_tags, data.getTitle());
view.setTextViewText(R.id.notification_content, data.getContent());
return view;
}
谢谢