package com.nolanlawson.logcat; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; import com.nolanlawson.logcat.helper.DialogHelper; import com.nolanlawson.logcat.helper.PreferenceHelper; import com.nolanlawson.logcat.helper.ServiceHelper; import com.nolanlawson.logcat.helper.WidgetHelper; import com.nolanlawson.logcat.util.UtilLogger; public class RecordingWidgetProvider extends AppWidgetProvider { public static final String ACTION_RECORD_OR_STOP = "com.nolanlawson.logcat.action.RECORD_OR_STOP"; public static final String URI_SCHEME = "catlog_widget"; private static UtilLogger log = new UtilLogger(RecordingWidgetProvider.class); @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.onUpdate(context, appWidgetManager, appWidgetIds); log.d("onUpdate() for appWidgetIds %s", appWidgetIds); log.d("appWidgetIds are %s", appWidgetIds); // track which widgets were created, since there's a bug in the android system that lets // stale app widget ids stick around PreferenceHelper.setWidgetExistsPreference(context, appWidgetIds); WidgetHelper.updateWidgets(context, appWidgetIds); } @Override public void onReceive(final Context context, Intent intent) { super.onReceive(context, intent); log.d("onReceive(); intent is: %s",intent); if (intent != null && ACTION_RECORD_OR_STOP.equals(intent.getAction())) { // start or stop recording as necessary synchronized (RecordingWidgetProvider.class) { boolean alreadyRunning = ServiceHelper.checkIfServiceIsRunning(context, LogcatRecordingService.class); if (alreadyRunning) { // stop the current recording process DialogHelper.stopRecordingLog(context); } else { // start a new recording process Intent targetIntent = new Intent(); targetIntent.setClass(context, ShowRecordLogDialogActivity.class); targetIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_MULTIPLE_TASK |Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); context.startActivity(targetIntent); } } } } }