2012-04-18 17 views
1

私はウィジェット付きのアプリを持っています。ウィジェットでアプリを起動したいのですが、起動後にウィジェットがクリックに反応しません。通常はアプリを起動してからもう一度閉じると、ウィジェットはウィジェット自体のクリックに反応し始めます。起動後にAndroid 2.3ウィジェットがクリックに反応しないのはなぜですか?

これはどのように私のセットアップAppWidgetProviderとウィジェット:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) 
{ final int ids = appWidgetIds.length; 

    for(int i=0;i<ids;i++) 
    { int appWidgetId = appWidgetIds[i]; 

     Intent intent = new Intent(context, TestReceiver.class);    
     intent.setAction(ACTION_WIDGET_RECEIVER); 
     intent.setClassName(TestReceiver.class.getPackage().getName(), TestReceiver.class.getName()); 

     PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 

     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 

     views.setOnClickPendingIntent(R.id.widget_root, pi); 
     views.setTextViewText(R.id.widgetclock, "Loading..."); 

     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} 

私は少なくとも一度はそれを最初に起動することなく、私のアプリは、起動後にウィジェット上でクリックを登録するように変更する必要がありますか?

+0

なぜあなたはアクション*と*クラスを使用していますか?通常、どちらか一方を使用します。 – CommonsWare

+0

そうでなければ動作しません。 – HardCoder

+0

"そうでなければ動作しない" - それはほかの人のために働く。おそらく、あなたは 'BroadcastReceivers'と' Intent'システムがどのように働いているのかを学んで、その後アプリウィジェットを書くことを試みるべきです。 – CommonsWare

答えて

0

BOOTブロードキャストに応答するBroadcastReceiverを作成し、ウィジェットのPendingIntentをリセットしてみてください。私はウィジェットのPendingIntentsがデバイスの再起動後も存続するとは思わない。

+0

私はそれをリセットしようとしたが動作しませんでした。 – HardCoder

関連する問題