【发布时间】:2017-08-25 12:40:11
【问题描述】:
我的应用程序的一部分包含一个自定义锁屏,它需要像普通的 android 锁屏一样显示通知。
在 Android 6 之前一切正常,我使用 NotificationListenerService 来检索通知 contentView 和 bigContentView (RemoteViews)。我在我的自定义 RecyclerView 适配器上使用它们来创建一个通知列表,其中包含服务列出的相同通知:
//this is called by NotificationListenerService
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
AddNotification(sbn);
}
然后使用 StatusBarNotification 检索 contentView 和 bigContentView 并将它们应用到我的自定义 recycleview 列表视图中:
/**
* Add notification into recycleview
* @param sbn notification to add
*/
private void AddNotification(StatusBarNotification sbn)
{
Notification notification = sbn.getNotification();
if(notification==null) return;
if(notification.bigContentView!=null) {
//apply bigContentView to my recycleview list notification view
myListView.notificationview = notification.bigContentView.apply(myContext(), myNotificationLayout);
}
else if(notification.contentView!=null) {
//apply contentView to my recycleview list notification view
myListView.notificationview = notification.contentView.apply(myContext(), myNotificationLayout);
}
//notify recycleview of a new item inserted
notifyItemInserted(0);
}
这在 Android 7 中不再可能,因为从 Android N 开始(如 Android 文档中所述),contentView 和 bigContentView 可能为空(实际上它们是)。 这些非常有用,因为您可以复制通知视图,其中还可能包含一些复杂的操作控件(例如媒体播放器通知,例如带有播放/暂停/停止控件):
是否可以在 Android 7 及更高版本中创建与原始通知内容相同的视图?
如何复制 RemoteView 行为?是否可以检索所有通知信息(图形、文本、图标、意图等)?
【问题讨论】:
-
那么您在这里使用了什么解决方案?
标签: android notifications lockscreen remoteview