首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微件中的OnClick PendingIntent有时无法工作

微件中的OnClick PendingIntent有时无法工作
EN

Stack Overflow用户
提问于 2011-07-19 17:52:41
回答 4查看 6.1K关注 0票数 3

我有一个小工具和4个按钮。这些按钮实际上是其他应用程序的快捷方式。我用下面的代码为每个按钮设置了一个onClick挂起意图:

代码语言:javascript
复制
Intent i = context.getPackageManager().getLaunchIntentForPackage(s);                    
PendingIntent pi = PendingIntent.getActivity(context, 0, i, Intent.FLAG_ACTIVITY_NEW_TASK);
remoteViews.setOnClickPendingIntent(curIconId, pi);

通常它工作得很好,但有时它什么也做不了,在logcat中我看到一个SendIntentException,消息是"Cannot send pending intent“。

如果我更新小部件(即再次设置挂起的意图),它将再次正常工作。

你知道为什么它有时会出故障吗?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-19 23:10:26

问题是我向远程视图发送了太多的数据(在我的例子中,发送了太多的图标)。所以更新实际上失败了。你可以发送的内容是有大小限制的,我不记得我在哪里读到的。

在我的例子中,解决方案是使用资源URL而不是实际的图像来更新图像。

票数 2
EN

Stack Overflow用户

发布于 2011-07-20 02:16:22

似乎无论何时向小部件发送RemoteViews,都需要完全指定小部件。如果您只指定了小部件的一部分,如果某些原因导致您的小部件被更新(例如屏幕旋转),那么您的小部件将仅使用最新的RemoteViews重新创建。

这是向我指出这一点的链接,http://www.androiddiscuss.com/1-android-discuss/95040.html

票数 5
EN

Stack Overflow用户

发布于 2011-08-10 07:19:47

恐怕我不能回答你--我在一个同事(摩托罗拉)的手机上收到了同样的信号,但其他手机却没有。

I指出,您的PendingIntent.getActivity() flags参数是错误的:Intent.FLAG_ACTIVITY_NEW_TASK需要运行在Intent i上。getActivity()调用需要FLAG_ONE_SHOTFLAG_NO_CREATEFLAG_CANCEL_CURRENTFLAG_UPDATE_CURRENTIntent.FILL_IN_标志之一。

我还可以提到,在我使用PendingIntent.FLAG_CANCEL_CURRENT之前,我的点击有时会失败。这可能是添加“唯一数据”有帮助的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6745302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档