2011-07-19 13 views
3

ウィジェットと4つのボタンがあります。ボタンは実際には他のアプリケーションへのショートカットです。通常、それが正常に動作しますウィジェットのOnClick PendingIntentが動作しない場合があります

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

、時にはそれは何もしていないとlogcatに、私はメッセージでSendIntentExceptionを見る「ことができない:私はこのコードでボタンのそれぞれについてのonClick保留中の意図を設定しています保留中の意図を送信する "。

ウィジェットを更新する(つまり、保留中のインテントを再度設定する)と、再び正常に動作します。

時にはなぜそれが壊れているかについてのアイデアはありますか?

おかげ

答えて

2

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

私の場合の解決策は、イメージを実際のイメージの代わりにリソースURLで更新することでした。

5

あなたがウィジェットにRemoteViewsを送信するたびに、あなたは完全にウィジェットを指定する必要があると思われます。ウィジェットを部分的にしか指定しないと、ウィジェットが何か(画面の回転など)更新されると、ウィジェットは最新のRemoteViewで再作成されます。

ここで私は、私はあなたに答えることができないことを恐れている私にhttp://www.androiddiscuss.com/1-android-discuss/95040.html

+0

私の問題とは関連していないようです。私のコードはウィジェット全体を更新し、毎回PendingIntentsを設定します。また、私のホーム画面は回転しません。 – Ran

+0

元のポストの問題は解決しないかもしれませんが、それはまさに私が持っていた問題です。非常に有用であり、答えを見つけることが難しい、多くのおかげで! – Juanjo

1

これを指摘リンクだ - 私は1人の同僚の(モトローラ)携帯電話ではなく、他の電話機で同じ動作を得るには。 Intent.FLAG_ACTIVITY_NEW_TASKIntent iに行くために必要があること:

私はあなたPendingIntent.getActivity()flagsパラメータが間違っていること、しかし、指摘することができます。 getActivity()コールには、FLAG_ONE_SHOT,FLAG_NO_CREATE,FLAG_CANCEL_CURRENT,FLAG_UPDATE_CURRENT、またはIntent.FILL_IN_フラグのいずれか1つが必要です。

PendingIntent.FLAG_CANCEL_CURRENTを使用するまでは、クリックが失敗することもあります。これは、「ユニークなデータ」の追加が役立つ理由です。

+0

どのようなルーキーミス!ありがとう。 – Ran

0

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

関連する問題