【问题标题】:Widget setOnClickPendingIntent not starting service小部件 setOnClickPendingIntent 未启动服务
【发布时间】:2012-10-31 18:50:14
【问题描述】:

按照here 的示例,我轻松地创建了我的小部件。

然后我在我的小部件中添加了一个按钮,这个按钮应该启动一个服务,所以我将以下代码添加到我的 WidgetProvider 中

@Override
public void onEnabled(Context context) {
    Log.e("ERROR", "REMOVE ME"); // TODO remove. This is for eclipse logcat recognition
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

    Intent intent = new Intent(context, RepairService.class);
    PendingIntent pi = PendingIntent.getService(context, 0, intent, 0);
    views.setOnClickPendingIntent(R.id.widget_boost, pi);
}

代码肯定会被调用,但服务没有启动。我确定我可能错过了服务 PendingIntent 的实现,但我看不到什么。还有人知道吗?

【问题讨论】:

    标签: android android-widget android-service android-pendingintent


    【解决方案1】:

    我已经设法解决了它

    public class WidgetProvider extends AppWidgetProvider {
    
    @Override
      public void onUpdate(Context context, AppWidgetManager appWidgetManager,
          int[] appWidgetIds) {
    
        Log.e("ERROR", "onUpdate method called");
    
        final int N = appWidgetIds.length;
    
        // Perform this loop procedure for each App Widget that belongs to this provider
        for (int i=0; i<N; i++) {
            int appWidgetId = appWidgetIds[i];
    
            // Create an Intent to launch ExampleActivity
            Intent intent = new Intent(context, UpdateService.class);
            PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
            Log("Pending Intent = " + pendingIntent.toString());
    
            // Get the layout for the App Widget and attach an on-click listener to the button
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
            views.setOnClickPendingIntent(R.id.widge, pendingIntent);
    
            // Tell the AppWidgetManager to perform an update on the current App Widget
            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    
    }
    
    public static class UpdateService extends Service {
    
        @Override
        public void onCreate() {
                  .........
                  .........
               }
    
               // Service stuff here
       }
    }
    

    我不完全确定在 onEnable 中这样做有什么问题。也许有人可以解释为什么。

    【讨论】:

      猜你喜欢
      • 2013-06-26
      • 2013-07-05
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2020-04-27
      • 2014-10-03
      相关资源
      最近更新 更多