2012-05-24 37 views
0

我的AppWidgetProvider類待定意圖稱爲低於該調用一個活動打開如何檢測appWidgetId在活動從的AppWidgetProvider

for (int widgetId : allWidgetIds) { 

     remoteViewParent = new RemoteViews(context.getPackageName(),R.layout.widget_initial_layout); 

     try{ 
      Intent clickIntent = new Intent(context,Activity.class);//same class name is passed to give the call to itself 
      clickIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

          //PASSING ID HERE 
      clickIntent.putExtra("checkintent", ""+widgetId); 


      PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, clickIntent,PendingIntent.FLAG_UPDATE_CURRENT); 
      remoteViewParent.setOnClickPendingIntent(R.id.widget_img_logo, pendingIntent); 

      appWidgetManager.updateAppWidget(widgetId, remoteViewParent); 

     }catch (Exception e) { 
     } 

    } 

我想要的活動,收到了爲widgetid在我的活動課,所以我將它傳遞通過putExtra() 這之後我加3部件一個一個,當我點擊任何關於我的主屏幕上的小部件的我剛剛得到的最新的Widget添加的ID(通過我的意圖)

有沒有辦法來區分點擊一個特定的小部件添加,圍繞任何工作?

久久不已。

我想要這個android 2.2及以上。 歡迎任何建議

回答

0

比較PedingIntent的時候沒有考慮其他的東西,所以即使你改變了額外的東西,你也會得到相同的意圖。 FLAG_UPDATE_CURRENT意味着當前的PendingIntent被更新,因此你只能得到最後一個ID。如果您想要可靠地傳遞ID,則必須將其放入Intent的數據中,那麼您將能夠針對不同的ID獲取不同的PendingIntent。類似這樣的:

Uri data = Uri.withAppendedPath (Uri.parse("mywidget://mywidget/widgetId/#"), 
       String.valueOf(widgetId)); 
intent.setData(data); 

然後從Intent的數據中提取ID以區分小部件。

+0

什麼呢' 「進myWidget」'站在這裏的,它是靜態的東西, 我試圖使用該'烏里數據= Uri.withAppendedPath(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)),字符串.valueOf(widgetId));'沒有運氣 –

+0

非常感謝,它也適用於這種方式。 –