Android通知(长按)上的事件捕获

9

在通知上进行标准的短按会触发其中保存的PendingIntent。

是否可能捕获其他事件?

需求是捕获长按事件。


我也想要一个答案。 - Whitecat
1
我认为这是不可能的。我期待着看到答案。 - Leonidos
嗯,刚看到Sherif elKhatib想提供答案...好吧...我声称这是不可能的,但请证明我错了,如果有我不知道的解决方案,我会很高兴的。 :) - AndacAydin
2个回答

11

虽然您可以使用NotificationCompatRemoteViews创建自定义通知视图,但是您无法操作底层的单击行为。您唯一拥有的选项是更改少量ViewTypes的某些参数:

因此,要回答你的问题:不,使用最新的Google API(API级别17-2013年1月14日)无法在通知中的任何视图元素中插入onLongClickListener。

为什么会这样?

RemoteView只是View的简化衍生版本。它甚至与View无关(RemoteView扩展Object),因此不提供您在真正的View中拥有的所有选项(View.setOnLongClickListener())。

RemoteViews是什么?

一个 RemoteView 可以被另一个进程以与原始应用程序相同的权限执行(这就是为什么它们被称为 Remote Views)。这样,小部件和通知将以其定义应用程序的权限运行。
从 ICS 开始,长按通知会触发“应用信息”选项,因此您可以查看发送它的应用程序(用于识别垃圾邮件应用程序)。此外,从 JellyBean 开始,您还可以使用丰富的通知来执行许多操作,包括多个操作,可能可以通过这种方式解决您的问题。
Shalafi
如果您想了解更多信息,我建议阅读以下文章:
- http://www.vogella.com/articles/AndroidWidgets/article.html 特别是第 3.2 章节,您可以找到更多有价值的信息。 - http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout

2
一些说明。RemoteViews 的存在是为了所有权和权限的原因。这些视图是由系统创建的,而不是您的应用程序,因此它们具有更多的权限。这就是为什么它的使用受到限制(也是为什么它们被称为 Remote Views)。从 ICS 开始,长按通知会触发“应用信息”选项,因此您可以查看发送它的应用程序(用于识别垃圾邮件应用程序)。此外,从 JellyBean 开始,您拥有丰富的通知功能,可以让您做很多事情,包括多个操作,可能可以通过这种方式解决您的问题。 - shalafi
感谢shalafi的见解,这就是我喜欢stackoverflow的原因。 - AndacAydin
@Shalafi,你可能有一些资源吗?我谷歌了很多,但不幸的是没有找到任何准确描述RemoteViews在一般情况下使用的内容。 - AndacAydin
我记得在一篇关于主屏幕小部件的文章中读到过这个,该文章还使用了RemoteViews。手头没有链接,但会查找一下。 - shalafi
没有问题,它可以丰富答案,所以没关系 :) 请放心删除引号 - shalafi
显示剩余2条评论

1

就像一个应用程序小部件一样,它是一个远程视图,只支持轻触和垂直拖动手势


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接