2

我正在尝试制作一个可以定期显示自定义通知的演示。

为此,我使用 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;
    }

谢谢

4

0 回答 0