3

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

Intent i = context.getPackageManager().getLaunchIntentForPackage(s);                    
PendingIntent pi = PendingIntent.getActivity(context, 0, i, Intent.FLAG_ACTIVITY_NEW_TASK);
remoteViews.setOnClickPendingIntent(curIconId, pi);

通常它工作正常,但有时它什么也不做,并且在 logcat 中我看到带有消息“无法发送待处理意图”的 SendIntentException。

如果我更新小部件(即再次设置待处理的意图),它会再次正常工作。

关于它为什么有时会崩溃的任何想法?

谢谢

4

4 回答 4

5

似乎每当您将 RemoteViews 发送到小部件时,您都需要完全指定小部件。如果您仅部分指定小部件,如果某些原因导致您的小部件被更新(例如屏幕旋转),您的小部件将仅使用最新的 RemoteViews 重新创建。

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

于 2011-07-19T18:16:21.620 回答
2

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

就我而言,解决方案是使用资源 URL 而不是实际图像来更新图像。

于 2012-01-19T15:10:26.370 回答
1

恐怕我无法回答你 - 我在一位同事(摩托罗拉)的手机上得到了同样的行为,但在其他手机上却没有。

不过,我可以指出,您的PendingIntent.getActivity() flags参数是错误的:Intent.FLAG_ACTIVITY_NEW_TASK需要继续Intent igetActivity()调用需要, FLAG_ONE_SHOT, FLAG_NO_CREATE,FLAG_CANCEL_CURRENTFLAG_UPDATE_CURRENT其中一个Intent.FILL_IN_标志。

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

于 2011-08-09T23:19:46.740 回答
0

我遇到了同样的问题:小部件在旋转后不起作用。我的小部件中的问题是我已经覆盖了 onReceive 方法并触摸了视图以增加文本值。我解决了在 onUpdate 和 onReceive 中复制 setOnClickPendingIntent 的问题。

于 2013-02-25T11:21:19.007 回答