2012-04-18 67 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 2012-04-18 20:26:45

+0

因爲否則它不起作用。 – HardCoder 2012-04-18 21:14:18

+0

「因爲否則它不起作用」 - 它適用於其他人。也許你應該花一些時間學習'BroadcastReceivers'和'Intent'系統是如何工作的,然後(並且只有這樣)嘗試編寫一個應用程序部件。 – CommonsWare 2012-04-18 21:16:58

回答

0

嘗試創建一個響應BOOT廣播並重置小部件的PendingIntent的BroadcastReceiver:我不相信部件PendingIntents在設備重新啓動後仍然存在。

+0

我嘗試重置它,它不起作用。 – HardCoder 2012-04-18 21:16:02

相關問題