【问题标题】: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 重新运行我的应用程序而不删除小部件时,我的小部件就会开始成功运行而不会出现任何故障。 真不知道这是什么问题??或者,如果有人能够通过向我发送从该活动上的按钮开始新活动的小部件的代码来帮助我。

【问题讨论】:

    标签: android button android-activity android-widget


    【解决方案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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多