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 をウィジェットに送信するときはいつでも、ウィジェットを完全に指定する必要があるようです。ウィジェットを部分的にしか指定しない場合、何かによってウィジェットが更新される場合 (画面の回転など)、ウィジェットは最新の RemoteView でのみ再作成されます。

これは私にこれを指摘したリンクですhttp://www.androiddiscuss.com/1-android-discuss/95040.html

于 2011-07-19T18:16:21.620 に答える
2

問題は、リモート ビューに送信したデータが多すぎることでした (私の場合は、アイコンが多すぎます)。したがって、更新は実際には失敗しました。送信できるサイズには制限があります。どこで読んだか覚えていません。

私の場合の解決策は、実際の画像ではなくリソース URL で画像を更新することでした。

于 2012-01-19T15:10:26.370 に答える
1

残念ながらお答えできません。ある同僚 (Motorola) の電話で同じ動作が発生しますが、他の電話では発生しません。

ただし、パラメーターが間違っていることを指摘できます。それは続ける必要があります。呼び出しには、、、、、、またはフラグのいずれかが必要です。PendingIntent.getActivity() flagsIntent.FLAG_ACTIVITY_NEW_TASKIntent igetActivity()FLAG_ONE_SHOTFLAG_NO_CREATEFLAG_CANCEL_CURRENTFLAG_UPDATE_CURRENTIntent.FILL_IN_

を使用するまで、クリックが失敗することがあったことにも言及できますPendingIntent.FLAG_CANCEL_CURRENT。これが、「一意のデータ」を追加すると役立つ理由かもしれません。

于 2011-08-09T23:19:46.740 に答える
0

私は同じ問題を抱えていました:回転後にウィジェットが機能しませんでした。私のウィジェットの問題は、onReceive メソッドをオーバーライドし、ビューに触れてテキスト値をインクリメントしたことです。setOnClickPendingIntent が onUpdate または onReceive にあることを複製する問題を解決しました。

于 2013-02-25T11:21:19.007 に答える