Android 小部件中的OnClick pendingent有时不会';行不通

Android 小部件中的OnClick pendingent有时不会';行不通,android,widget,onclick,android-pendingintent,Android,Widget,Onclick,Android Pendingintent,我有一个小部件和4个按钮。这些按钮实际上是指向其他应用程序的快捷方式。我已经使用以下代码为每个按钮设置了onClick挂起意图: Intent i = context.getPackageManager().getLaunchIntentForPackage(s); PendingIntent pi = PendingIntent.getActivity(context, 0, i, Intent.FLAG_ACTIVITY_NEW_TASK); remo

我有一个小部件和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中,我看到一个SendIntentextException,其中包含消息“CannotsendPendingIntent”

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

你知道为什么它有时会坏吗


感谢

无论何时向小部件发送RemoteView,都需要完全指定小部件。如果您仅部分指定了小部件,如果有什么原因导致小部件更新(例如屏幕旋转),则您的小部件将仅使用最新的RemoteView重新创建


这里有一个链接向我指出了这一点

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

但是,我可以指出,您的
pendingent.getActivity()
flags
参数是错误的:
Intent.FLAG\u ACTIVITY\u NEW\u TASK
需要继续执行
Intent I
getActivity()
调用需要一个
FLAG\u one\u SHOT
FLAG\u NO\u CREATE
FLAG\u CANCEL\u CURRENT
FLAG\u UPDATE\u CURRENT
或一个
意图。填入
标志


我还可以提到,我的点击有时会失败,直到我使用了
pendingent.FLAG\u CANCEL\u CURRENT
。这可能就是为什么添加“唯一数据”会有帮助。

问题是我向远程视图发送了太多数据(在我的情况下,图标太多)。所以更新实际上失败了。你能寄的东西有大小限制,不记得我在哪里读过

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

我也遇到了同样的问题: 旋转后小部件不工作。我的小部件中的问题是我已经覆盖了
onReceive方法,然后触摸视图以增加文本值。我解决了复制onUpdate中、onReceive中的SetOnClickPendingContent的问题。

这似乎与我的问题无关。我的代码会更新整个小部件,每次都会设置挂起的内容。此外,我的主屏幕不旋转。它可能无法解决最初的post问题,但这正是我遇到的问题。非常有用,很难找到答案,非常感谢!