作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Mirror API(c# 库)向 Glass 发送一捆卡片
我知道您可以在单张卡片上使用默认的删除菜单项,但是有没有办法为整个 bundle 提供删除功能,最好是用户一次操作的结果?
我已经使用下面的代码成功地在菜单项上使用了 DELETE 操作
MenuItem mi = new MenuItem();
mi.Action = "DELETE";
TimelineItem tli = new TimelineItem()
{
Html = itemHtml.ToString(),
Notification = new NotificationConfig() { Level = "DEFAULT" },
MenuItems = new List<MenuItem>() { mi }
};
有没有办法将这个删除菜单项添加到包封面?我知道这可能很棘手,因为单击 bundle 封面会使您导航到子卡中,因此没有像单张卡上那样的菜单。我正在寻找这样的东西(我确实尝试过,但它只是忽略了菜单项):
MenuItem mi = new MenuItem();
mi.Action = "DELETE";
TimelineItem tli = new TimelineItem()
{
Html = itemHtml.ToString(),
Notification = new NotificationConfig() { Level = "DEFAULT" },
IsBundleCover = true,
BundleId = bundleId,
MenuItems = new List<MenuItem>() { mi }
};
如果在封面卡片上不可能,是否可以通过向子卡片添加删除菜单项来为 bundle 执行此操作?
如有任何建议,我们将不胜感激
最佳答案
您可以使用自定义菜单来执行此操作。下面的代码使用 Java,但 C# 应该类似:
向卡片添加自定义菜单项:
List<MenuValue> menuValueList = new ArrayList<MenuValue>();
menuValueList.add(new MenuValue().setIconUrl(iconUrl).setDisplayName("Delete All"));
MenuItem menuItem = new MenuItem();
menuItem.setValues(menuValueList).setId("delete_bundle_A").setAction("CUSTOM");
List<MenuItem> menuItemList = new ArrayList<MenuItem>();
menuItemList.add(menuItem);
timelineItem.setMenuItems(menuItemList);
定义处理镜像服务器通知回调请求的 Controller :
if (notification.getCollection().equals("timeline") && notification.getUserActions().contains(new UserAction().setType("CUSTOM").setPayload("delete_bundle_A"))) {
deleteCards(credential, bundleId);
}
删除卡片函数:
// if bundleId is null or "", delete all cards
public static void deleteCards(Credential credential, String bundleId) throws IOException {
if (bundleId == null) {
bundleId = "";
}
Mirror.Timeline timelineItems = MirrorClient.getMirror(credential).timeline();
Mirror.Timeline.List list = timelineItems.list();
List<TimelineItem> timelineItemList = null;
do {
TimelineListResponse response = list.execute();
timelineItemList = response.getItems();
if (timelineItemList != null && timelineItemList.size() > 0) {
for (TimelineItem item : timelineItemList) {
if (bundleId == "" || bundleId.equalsIgnoreCase(item.getBundleId())) {
LOG.info("Deleting card " + item.getId());
MirrorClient.deleteTimelineItem(credential, item.getId());
}
}
list.setPageToken(response.getNextPageToken());
} else {
break;
}
} while (list.getPageToken() != null && list.getPageToken().length() > 0);
}
最后,不要忘记在应用程序启动时订阅时间轴通知:
String notifyUrl = "https://mirrornotifications.appspot.com/forward?url=" + "http://yourServer.com/notify";
Subscription subscription = MirrorClient.insertSubscription(credential, notifyUrl, userId, "timeline");
关于google-glass - Google Glass Mirror API - 有没有办法删除一捆卡片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035411/
我是一名优秀的程序员,十分优秀!