2012-07-05 64 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之后。

编程的乐趣。