I have a widgetProvider. I also have a class of service that computes for the widget.
The widget works great on initialization. I get an error when I try to call a service from the onReceive method after the translation event that I want to respond to (time change).
How to update a widget from onReceive after receiving a broadcast event?
Here is my widget
public class HijriWidget extends AppWidgetProvider{ ... @Override public void onReceive(Context context, Intent intent) { if(Intent.ACTION_TIME_CHANGED.equals(intent.getAction())||Intent.ACTION_DATE_CHANGED.equals(intent.getAction())){
}
and here is my service
public class RefreshService extends Service { @Override public void onStart(Intent intent, int startId) { int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); RemoteViews remoteView = new RemoteViews(getApplicationContext() .getPackageName(), R.layout.widget); AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext()); final Calendar c = Calendar.getInstance(); int mYear = c.get(Calendar.YEAR); int mMonth = c.get(Calendar.MONTH); int mDay = c.get(Calendar.DAY_OF_MONTH); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); mMonth++; HijriCalendar hc =new HijriCalendar( mYear,mMonth,mDay); remoteView.setTextViewText(R.id.TextView02,hc.getHijriMonth()+"/"+hc.getHijriDay()); remoteView.setTextColor(R.id.TextView02, Color.BLACK); remoteView.setTextViewText(R.id.TextView01, hc.getHijriYear()+""); remoteView.setTextColor(R.id.TextView01, Color.WHITE); appWidgetManager.updateAppWidget(appWidgetId, remoteView); super.onStart(intent, startId); } @Override public IBinder onBind(Intent intent) {
Any help would be appreciated. Thanks.
UPDATE:
I found a problem. Check out my answer below.
android widget
Majjoodi
source share