如何通过单击小部件中的图像来启动活动?

Posted

技术标签:

【中文标题】如何通过单击小部件中的图像来启动活动?【英文标题】:How to start an activity by the click on an image in widget? 【发布时间】:2014-11-24 08:16:58 【问题描述】:
Intent intent = new Intent( context, ColorConfigure.class);
Intent.putExtras(AppWidgetManager.EXTRA_APPWIDGET_ID, appwidgetId );
PendingIntent pi = PendingIntent.getActivity( context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews r = new RemoteViews( context.getPackageName(), R.layout. activity_widget);
r.setOnClickPendingIntent(R.I'd.pic, pic);

上面的代码暂时不起作用,即,当我第一次启动小部件时,小部件很容易加载,但是当我从小部件开始新的活动时,什么也没有发生。 但是,每当我从 Eclipse 重新运行我的应用程序而不删除小部件时,我的小部件就会开始成功运行而不会出现任何故障。 真不知道这是什么问题??或者,如果有人能够通过向我发送从该活动上的按钮开始新活动的小部件的代码来帮助我。

【问题讨论】:

【参考方案1】:

即使我的应用程序主屏幕小部件也遇到过类似的问题。它与 fb/twitter 主屏幕小部件非常相似(如果未签名则显示更新,显示为“您的未登录”)。使用 android 服务实现。即使您不需要服务。在您的情况下,您没有调用 manager.updateAppWidget(ids, views);

public class NFWidgetProvider extends AppWidgetProvider 

            @Override
            public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                    int[] appWidgetIds) 
    final Intent intent = new Intent(context, UpdateService.class);

            context.startService(intent);

                 

Updateservice.class //我的应用代码..提及服务类应用清单

 public void onStart(Intent intent, int startId) 

AppWidgetManager manager = AppWidgetManager.getInstance(this);
        ComponentName thisWidget = new ComponentName(this,
                NFWidgetProvider.class);
        int[] ids = manager.getAppWidgetIds(thisWidget);
        final int N = ids.length;
        for (int i = 0; i < N; i++) 
            int awID = ids[i];

    RemoteViews    views = new RemoteViews(getPackageName(),
                        R.layout.widget_layout);

                Intent intent = new Intent(this, your intented class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                //views.setTextViewText(R.id.widgetcount, visitstext);
                PendingIntent pendingIntent = PendingIntent.getActivity(this,
                        0, intent, 0);

                views.setOnClickPendingIntent(R.id.widgetimage, pendingIntent);
manager.updateAppWidget(awID, views);
    

【讨论】:

以上是关于如何通过单击小部件中的图像来启动活动?的主要内容,如果未能解决你的问题,请参考以下文章

单击小部件后如何启动活动?

单击应用程序小部件(远程视图)中的列表视图项目未启动活动

Android:将对象从集合小部件传递到活动

如何启动在与小部件不同的包中定义的活动?

如何在android小部件中单击图像按钮显示吐司

如何避免鼠标单击一个小部件触发 Qt 中其他小部件的信号?