2

老实说,我不知道我在这里做错了什么。昨晚我有这个工作,我弄乱了代码,我很确定我把它放回了原来的位置,但点击它时它根本没有做任何事情。

这是我的代码

    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);

我只是想在单击小部件时将用户带到市场,但什么也没有发生。

这是一个简单的修复吗?

4

2 回答 2

7

我的天啊。我在这上面花了大约 4-5 个小时.. 才意识到我做错了什么。

我错过了'appWidgetManager.updateAppWidget(appWidgetId,remoteView);' 在我的 setOnClickPendingIntent 之后。

编程的乐趣。

于 2012-07-06T03:29:58.397 回答
0

对于处理单击主屏幕小部件,您需要在 manifast 中注册自定义 Reviver 为:

<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);
    ///....

您可以在此处查看用于处理单击主屏幕小部件的完整代码:

静音切换

于 2012-07-05T07:02:20.790 回答