Skip to content

Commit

Permalink
Widget crash fix
Browse files Browse the repository at this point in the history
  • Loading branch information
AbhishekChd committed Jul 16, 2022
1 parent 2e18c00 commit 87c56d9
Showing 1 changed file with 28 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.Observer;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build;
import android.view.View;
import android.widget.RemoteViews;

import com.bumptech.glide.request.RequestOptions;
import androidx.annotation.NonNull;

import com.bumptech.glide.request.target.AppWidgetTarget;
import com.bumptech.glide.request.transition.Transition;
import com.example.abhishek.newsapp.R;
Expand Down Expand Up @@ -47,7 +47,7 @@ static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,

AppWidgetTarget appWidgetTarget = new AppWidgetTarget(context, R.id.iv_news_image, views, appWidgetId) {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
super.onResourceReady(resource, transition);
}
};
Expand All @@ -62,18 +62,18 @@ public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transiti
Intent nextIntent = new Intent(context, SavedNewsService.class);
nextIntent.setAction(SavedNewsService.ACTION_GET_NEXT);
nextIntent.putExtra(SavedNewsService.PARAM_CURRENT, selected);
PendingIntent nextPendingIntent = PendingIntent.getService(context, 0, nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent nextPendingIntent = getPendingIntent(context, nextIntent, false);
views.setOnClickPendingIntent(R.id.ib_next, nextPendingIntent);

Intent previousIntent = new Intent(context, SavedNewsService.class);
previousIntent.setAction(SavedNewsService.ACTION_GET_PREVIOUS);
previousIntent.putExtra(SavedNewsService.PARAM_CURRENT, selected);
PendingIntent previousPendingIntent = PendingIntent.getService(context, 0, previousIntent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent previousPendingIntent = getPendingIntent(context, previousIntent, false);
views.setOnClickPendingIntent(R.id.ib_previous, previousPendingIntent);

Intent detail = new Intent(context, DetailActivity.class);
detail.putExtra(DetailActivity.PARAM_ARTICLE, articles.get(selected));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, detail, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pendingIntent = getPendingIntent(context, detail, true);
views.setOnClickPendingIntent(R.id.widget_parent, pendingIntent);

} else {
Expand All @@ -85,7 +85,7 @@ public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transiti
views.setViewVisibility(R.id.tv_error, View.VISIBLE);

Intent home = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, home, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pendingIntent = getPendingIntent(context, home, true);
views.setOnClickPendingIntent(R.id.widget_parent, pendingIntent);
}
// Instruct the widget manager to update the widget
Expand All @@ -97,7 +97,7 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a
Intent nextIntent = new Intent(context, SavedNewsService.class);
nextIntent.setAction(SavedNewsService.ACTION_GET_NEXT);
nextIntent.putExtra(SavedNewsService.PARAM_CURRENT, -1);
PendingIntent nextPendingIntent = PendingIntent.getService(context, 0, nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent nextPendingIntent = getPendingIntent(context, nextIntent, false);
try {
nextPendingIntent.send();
} catch (PendingIntent.CanceledException e) {
Expand All @@ -106,13 +106,6 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a

}

public static void updateNewsWidgets(Context context, AppWidgetManager appWidgetManager, List<Article> articles, int selected, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, articles, selected, appWidgetId);
}
}

@Override
public void onEnabled(Context context) {
// Enter relevant functionality for when the first widget is created
Expand All @@ -122,5 +115,24 @@ public void onEnabled(Context context) {
public void onDisabled(Context context) {
// Enter relevant functionality for when the last widget is disabled
}

public static void updateNewsWidgets(Context context, AppWidgetManager appWidgetManager, List<Article> articles, int selected, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, articles, selected, appWidgetId);
}
}

private static PendingIntent getPendingIntent(Context context, Intent intent, boolean isActivity) {
int flag = PendingIntent.FLAG_UPDATE_CURRENT;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
flag = PendingIntent.FLAG_IMMUTABLE;
}
if (isActivity) {
return PendingIntent.getActivity(context, 0, intent, flag);

}
return PendingIntent.getService(context, 0, intent, flag);
}
}

0 comments on commit 87c56d9

Please sign in to comment.