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

时间:2014-09-29 20:31:41

标签: android button android-activity android-widget

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 个答案:

答案 0 :(得分: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);
    }