package com.naman14.timber.widgets.desktop; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.support.annotation.LayoutRes; import android.widget.RemoteViews; import com.naman14.timber.MusicService; /** * Created by nv95 on 02.11.16. */ public abstract class BaseWidget extends AppWidgetProvider { protected static final int REQUEST_NEXT = 1; protected static final int REQUEST_PREV = 2; protected static final int REQUEST_PLAYPAUSE = 3; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { ComponentName serviceName = new ComponentName(context, MusicService.class); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), getLayoutRes()); try { onViewsUpdate(context, remoteViews, serviceName); appWidgetManager.updateAppWidget(appWidgetIds, remoteViews); } catch (Exception e) { e.printStackTrace(); } } @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action != null && action.startsWith("com.naman14.timber.")) { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); ComponentName thisAppWidget = new ComponentName(context.getPackageName(), this.getClass().getName()); int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget); onUpdate(context, appWidgetManager, appWidgetIds); } else { super.onReceive(context, intent); } } abstract void onViewsUpdate(Context context, RemoteViews remoteViews, ComponentName serviceName); abstract @LayoutRes int getLayoutRes(); }