2012-07-05 61 views
2

我真的不知道我在這裏做錯了什麼。我昨天晚上做了這個工作,我搞砸了代碼,我很確定我已經回到了它的位置,但點擊時它什麼都不做。Android小部件onClick不起作用

這裏是我的代碼

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    Log.d(LOG_TAG, "onUpdate(): "); 

    for (int appWidgetId : appWidgetIds) { 


    Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=com.xx.xx")); 
    PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT); 


    RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget); 
    remoteView.setOnClickPendingIntent(R.id.image, pendingIntent); 

    }   
    super.onUpdate(context, appWidgetManager, appWidgetIds); 

我只是想點擊的組件,但是什麼都沒有發生時採取的用戶市場。

這是一個簡單的修復?

回答

0

處理點擊主屏幕小部件,你需要在manifast作爲註冊一個自定義齊磊:

<intent-filter> 
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    <action android:name="com.imranandroid.xxx.xxxx.ACTION_WIDGET_CLICK"/> 
    <action android:name="android.appwidget.action.APPWIDGET_DELETED"/> 

</intent-filter> 
    <meta-data android:name="android.appwidget.provider" 
     android:resource="@xml/widget_info" /> 
</receiver> 

,並與窗口小部件佈局或按鈕安裝這個動作:

public class SlientwidgetProvider extends AppWidgetProvider { 
    public static String ACTION_WIDGET_CLICK= "ActionReceiverClick"; 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    RemoteViews rview = new RemoteViews(paramContext.getPackageName(), R.layout.widget_layoutmain); 
    Intent active = new Intent(paramContext, SlientwidgetProvider.class); 
    active.setAction(Globfilds.ACTION_WIDGET_CLICK); 
    ///.... 

你可以看到完整的代碼在這裏處理點擊主屏幕Widgets:

Silenttoggle

+0

這沒有效果我害怕。謝謝你。這與我在互聯網上發佈的幾乎所有其他方式都完全不同。 – jblz

+0

@jblz:沒關係。我不會用整個代碼去。只是檢查我們如何讓小部件點擊。這不是來自互聯網的例子。 –

5

哦,我的上帝。我已經花了大約4-5個小時,只是意識到我做錯了什麼。

我缺少'appWidgetManager.updateAppWidget(appWidgetId,remoteView);'在我的setOnClickPendingIntent之後。

編程的樂趣。