Parcourir la source

[위젯][Bug] 위젯 업데이트 진행 중 2
- text 는 업데이트 되는데 image(Glide) 가 안되고 있음.

hyodong.min il y a 6 ans
Parent
commit
95bcdd5954

+ 34 - 8
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/widget/LifeplusWidget.java

@@ -3,8 +3,10 @@ package kr.co.zumo.app.lifeplus.view.screen.widget;
 import android.app.PendingIntent;
 import android.appwidget.AppWidgetManager;
 import android.appwidget.AppWidgetProvider;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.net.Uri;
 import android.util.Log;
 import android.widget.RemoteViews;
 
@@ -16,6 +18,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.Disposable;
 import io.reactivex.schedulers.Schedulers;
 import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.activity.KakaoTalkActivity;
 import kr.co.zumo.app.lifeplus.activity.SplashActivity;
 import kr.co.zumo.app.lifeplus.bean.api.LifeplusContentsBean;
 import kr.co.zumo.app.lifeplus.bean.api.RequestBean;
@@ -23,6 +26,7 @@ import kr.co.zumo.app.lifeplus.config.INetworkConfig;
 import kr.co.zumo.app.lifeplus.config.NetworkConfigDevelop;
 import kr.co.zumo.app.lifeplus.config.NetworkConfigProduct;
 import kr.co.zumo.app.lifeplus.network.api.LifeplusAPIService;
+import kr.co.zumo.app.lifeplus.tool.ShareKakaoTalk;
 import kr.co.zumo.app.lifeplus.util.AppUtil;
 import kr.co.zumo.app.lifeplus.view.GlideApp;
 
@@ -39,9 +43,6 @@ public class LifeplusWidget extends AppWidgetProvider {
     // Construct the RemoteViews object
     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.lifeplus_widget);
 
-    Intent mainIntent = new Intent(context, SplashActivity.class);
-    views.setOnClickPendingIntent(R.id.image_view_bi, PendingIntent.getActivity(context, 0, mainIntent, 0));
-
     views.setTextViewText(R.id.text_view_title, contentsBean.getTitleWithTrim());
     views.setTextViewText(R.id.text_view_sub_title, contentsBean.getSubTitleWithTrim());
 
@@ -51,27 +52,45 @@ public class LifeplusWidget extends AppWidgetProvider {
 
     String url = contentsBean.getImageUrl();
     try {
-      GlideApp.with(context)
+      GlideApp.with(context.getApplicationContext()).clear(backgroundImage);
+
+      GlideApp.with(context.getApplicationContext())
         .asBitmap()
+        .skipMemoryCache(true)
         .load(url)
+        .override(400, 400)
         .apply(new RequestOptions().transforms(new CenterCrop()))
         .into(backgroundImage);
     } catch (Exception e) {
       e.printStackTrace();
     }
 
+    // app link
+    Intent mainIntent = new Intent(context, SplashActivity.class);
+    views.setOnClickPendingIntent(R.id.image_view_bi, PendingIntent.getActivity(context, 0, mainIntent, 0));
+
+    // refresh
     Intent refreshIntent = new Intent(context, LifeplusWidget.class);
     refreshIntent.setAction(REFRESH_CLICK);
     views.setOnClickPendingIntent(R.id.image_view_refresh, PendingIntent.getBroadcast(context, 0, refreshIntent, appWidgetId));
 
-    appWidgetManager.updateAppWidget(appWidgetId, views);
+    // contents link
+    Intent linkIntent = new Intent(context, KakaoTalkActivity.class);
+    linkIntent.setData(new Uri.Builder()
+      .appendQueryParameter(ShareKakaoTalk.CONTENTS_ITEM_NO, contentsBean.getItemNo())
+      .appendQueryParameter(ShareKakaoTalk.CONTENTS_ITEM_PAGE, "0")
+      .build());
+    views.setOnClickPendingIntent(R.id.image_view_background, PendingIntent.getActivity(context, 0, linkIntent, 0));
 
-    Log.w("APP# LifeplusWidget | render", "|" + "-----------------------------------");
+//    appWidgetManager.updateAppWidget(appWidgetId, views);
+    appWidgetManager.updateAppWidget(new ComponentName(context, LifeplusWidget.class), views);
 
+    Log.w("APP# LifeplusWidget | render", "|" + "----------------------------------- id: " + appWidgetId);
   }
 
   @Override
   public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
+    super.onUpdate(context, appWidgetManager, appWidgetIds);
     // There may be multiple widgets active, so update all of them
     Log.e("APP#  LifeplusWidget | onUpdate", "|" + "onUpdate ===>");
     for (int appWidgetId : appWidgetIds) {
@@ -103,6 +122,7 @@ public class LifeplusWidget extends AppWidgetProvider {
         render(context, appWidgetManager, appWidgetId, resultBean.getData());
       }, e -> {
         disposable = null;
+        Log.e("APP#  LifeplusWidget | updateAppWidget", "| " + " error -> " + e.getLocalizedMessage());
       });
   }
 
@@ -116,8 +136,14 @@ public class LifeplusWidget extends AppWidgetProvider {
     int appWidgetId = intent.getFlags();
     switch (intent.getAction()) {
       case REFRESH_CLICK:
-        Log.e("APP#  LifeplusWidget | onReceive", "|" + "refresh click after ===>");
-        updateAppWidget(context, appWidgetManager, appWidgetId);
+        Log.e("APP#  LifeplusWidget | onReceive", "|" + "refresh click after ===> id: " + appWidgetId);
+//        updateAppWidget(context, appWidgetManager, appWidgetId);
+//        ComponentName thisAppWidget = new ComponentName(context.getPackageName(), LifeplusWidget.class.getName());
+//        int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget);
+
+        int[] appWidgetIds = new int[]{appWidgetId};
+
+        onUpdate(context, appWidgetManager, appWidgetIds);
         break;
       default:
         break;