Parcourir la source

homeList中的内部h5支持配置是否有js交互和配置js注入代码地址

zengjiebin il y a 7 ans
Parent
commit
40199c7281

+ 18 - 0
app/src/main/java/com/sheep/gamegroup/absBase/IJumpWeb.java

@@ -0,0 +1,18 @@
+package com.sheep.gamegroup.absBase;
+
+/**
+ * Created by realicing on 2018/11/9.
+ * realicing@sina.com
+ * 跳转h5的接口
+ */
+public interface IJumpWeb extends IJump {
+    String KEY_URL = "url";
+    String KEY_TITLE = "title";
+    String KEY_NEEDJSINTERACT = "needJsInteract";
+    String KEY_JSURL = "jsUrl";
+    int NEEDJSINTERACT = 1;
+    //要注入的js的地址
+    String getJsUrl();
+    //需要js交互
+    boolean needJsInteract();
+}

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -9,6 +9,7 @@ import org.afinal.simplecache.ApiKey;
 
 import java.util.Map;
 
+import io.reactivex.Observable;
 import retrofit2.Call;
 import retrofit2.http.Body;
 import retrofit2.http.DELETE;
@@ -22,7 +23,6 @@ import retrofit2.http.Path;
 import retrofit2.http.Query;
 import retrofit2.http.QueryMap;
 import retrofit2.http.Streaming;
-import io.reactivex.Observable;
 
 /**
  * 暂时没接口
@@ -502,7 +502,7 @@ public interface ApiService {
     /**
      * 首页list
      */
-    @GET("app/home_list")
+    @GET(ApiKey.home_list)
     Observable<BaseMessage> homeList();
 
     /**

+ 60 - 9
app/src/main/java/com/sheep/gamegroup/model/entity/HomeListEntity.java

@@ -2,15 +2,45 @@ package com.sheep.gamegroup.model.entity;
 
 import android.text.TextUtils;
 
-import com.sheep.gamegroup.absBase.IJump;
+import com.sheep.gamegroup.absBase.IJumpWeb;
 import com.sheep.gamegroup.absBase.ITag;
 
 /**
  * 首页list
+ * <p>
  * Created by ljy on 2018/5/10.
+ * Display:	integer ($int64)
+ * 是否显示
+ * JsUrl:	string
+ * js注入的js地址,当类型为内部h5时,选填
+ * CreateTime:	integer ($int64)
+ * 创建时间,时间戳
+ * Jump:	string
+ * 跳转(h5填跳转地址,原生:1试玩赚钱,2邀请赚钱,3躺着赚钱,4办卡赚钱)
+ * Order:	integer ($int64)
+ * 排序,默认99,越小越靠前
+ * Url:	string
+ * url
+ * Desc:	string
+ * 描述
+ * Platform:	integer ($int64)
+ * 平台 0全部 1 andriod 2 ios
+ * UpdateTime:	integer ($int64)
+ * 更新时间
+ * Title:	string
+ * 标题
+ * Icon:	string
+ * 图标地址
+ * Type:	integer ($int64)
+ * 类型(0不跳转,1h5,2原生, 3特殊)
+ * Tag:	integer ($int64)
+ * 标签类型(0无,1热门,2最新,3现金,4活跃,5福利,6红包)
+ * Id:	integer ($int64)
+ * IsNeedJsInteract:	integer ($int64)
+ * 是否需要js交互,类型为内部h5时,选填 1:需要 2:不需要
  */
 
-public class HomeListEntity implements IJump, ITag {
+public class HomeListEntity implements ITag, IJumpWeb {
     private String CreateTime;//	integer ($int64)创建时间,时间戳
     private String Desc;//	string描述
     private String Icon;//	string图标地址
@@ -25,6 +55,8 @@ public class HomeListEntity implements IJump, ITag {
     private String Url;//	integer ($int64)更新时间
     private boolean select;
     private int Tag;//标签类型(0无,1热门,2最新,3现金,4活跃,5福利)
+    private String JsUrl;
+    private int IsNeedJsInteract;
 
     public int getTag() {
         return Tag;
@@ -68,7 +100,7 @@ public class HomeListEntity implements IJump, ITag {
     }
 
     public String getIcon() {
-        return TextUtils.isEmpty(Icon)?"0":Icon;
+        return TextUtils.isEmpty(Icon) ? "0" : Icon;
     }
 
     public void setIcon(String icon) {
@@ -139,21 +171,35 @@ public class HomeListEntity implements IJump, ITag {
         IsHot = isHot;
     }
 
+    public String getJsUrl() {
+        return JsUrl;
+    }
+
+    public void setJsUrl(String jsUrl) {
+        JsUrl = jsUrl;
+    }
 
+    public int getIsNeedJsInteract() {
+        return IsNeedJsInteract;
+    }
 
+    public void setIsNeedJsInteract(int isNeedJsInteract) {
+        IsNeedJsInteract = isNeedJsInteract;
+    }
 
-    private boolean isNew(){
+    private boolean isNew() {
         return IsNew == 1;
     }
-    private boolean isHot(){
+
+    private boolean isHot() {
         return IsHot == 1;
     }
 
     public String getTip() {
-        if(isHot()){
+        if (isHot()) {
             return "hot";
         }
-        if(isNew()){
+        if (isNew()) {
             return "new";
         }
         return "";
@@ -164,12 +210,17 @@ public class HomeListEntity implements IJump, ITag {
     }
 
     public int getTipColor() {
-        if(isHot()){
+        if (isHot()) {
             return 0xffff0000;
         }
-        if(isNew()){
+        if (isNew()) {
             return 0xff00ff00;
         }
         return 0x00ffffff;
     }
+
+    @Override
+    public boolean needJsInteract() {
+        return IsNeedJsInteract == IJumpWeb.NEEDJSINTERACT;
+    }
 }

+ 8 - 3
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -32,6 +32,7 @@ import com.mdad.sdk.mdsdk.AdManager;
 import com.mdad.sdk.mdsdk.common.AdData;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.IJump;
+import com.sheep.gamegroup.absBase.IJumpWeb;
 import com.sheep.gamegroup.alipay.PayResult;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.EventTypes;
@@ -63,7 +64,6 @@ import com.sheep.gamegroup.model.entity.XiaomiGameEntity;
 import com.sheep.gamegroup.model.util.EntityUtils;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.usage.AppUsageManager;
-import com.sheep.gamegroup.util.share.ShareLinkConfig;
 import com.sheep.gamegroup.view.activity.GameTaskOrderListAct;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTaskList;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
@@ -489,8 +489,13 @@ public class CommonUtil {
                 Jump2View.getInstance().goSignCardAct(context, null);
                 break;
             case JUMP_H5_INNER://内部WebView加载H5
-                if (checkLongMao(activity, jump))
-                    Jump2View.getInstance().goWeb(context, jump.getUrl(), jump.getTitle());
+                if (checkLongMao(activity, jump)) {
+                    if(jump instanceof IJumpWeb){
+                        Jump2View.getInstance().goWeb(context, (IJumpWeb)jump);
+                    } else {
+                        Jump2View.getInstance().goWeb(context, jump.getUrl(), jump.getTitle());
+                    }
+                }
                 break;
             case JUMP_H5_OUTER://外部浏览器加载H5
                 if (checkLongMao(activity, jump))

+ 31 - 3
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -15,6 +15,7 @@ import android.view.View;
 import com.danikula.videocache.HttpProxyCacheServer;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.IHomePageSearch;
+import com.sheep.gamegroup.absBase.IJumpWeb;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.model.entity.Advertising;
 import com.sheep.gamegroup.model.entity.Agreement;
@@ -126,7 +127,6 @@ import com.sheep.gamegroup.view.activity.WithdrawalListAct;
 import com.sheep.gamegroup.view.activity.WithdrawalResultAct;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTask1;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTaskRegisterSuccess;
-import com.sheep.gamegroup.view.dialog.DialogShare;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -944,8 +944,36 @@ public class Jump2View {
             url = "http://" + url;
         }
         Intent intent = new Intent(context, ActWebX5.class);
-        intent.putExtra("url", url);
-        intent.putExtra("title", TextUtils.isEmpty(title) ? "加载中..." : title);
+        intent.putExtra(IJumpWeb.KEY_URL, url);
+        intent.putExtra(IJumpWeb.KEY_TITLE, TextUtils.isEmpty(title) ? "加载中..." : title);
+        context.startActivity(intent);
+    }
+    /**
+     * 跳到web页面
+     *
+     * @param context
+     * @param jumpWeb
+     */
+    public void goWeb(Context context, IJumpWeb jumpWeb) {
+        String url = jumpWeb.getUrl();
+        String title = jumpWeb.getTitle();
+        if (TextUtils.isEmpty(url)) {
+            G.showToast(R.string.service_data_error);
+            return;
+        }
+        //检查url是否是http开头并添加
+        if (!url.startsWith("http") && !url.contains("://")) {
+            url = "http://" + url;
+        }
+        Intent intent = new Intent(context, ActWebX5.class);
+        intent.putExtra(IJumpWeb.KEY_URL, url);
+        intent.putExtra(IJumpWeb.KEY_TITLE, TextUtils.isEmpty(title) ? "加载中..." : title);
+        intent.putExtra(IJumpWeb.KEY_NEEDJSINTERACT, jumpWeb.needJsInteract());
+        //判断是否注入js
+        boolean hasJsUrl = TextUtils.isEmpty(jumpWeb.getJsUrl());
+        if(hasJsUrl){
+            intent.putExtra(IJumpWeb.KEY_JSURL, jumpWeb.getJsUrl());
+        }
         context.startActivity(intent);
     }
 

+ 11 - 0
app/src/main/java/com/sheep/gamegroup/util/js/KFZSJs.java

@@ -6,9 +6,12 @@ import android.webkit.JavascriptInterface;
 import com.sheep.gamegroup.util.ApiUtil;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.DeviceUtil;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.QQUtil;
+import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.share.ShareLinkConfig;
+import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
@@ -151,6 +154,14 @@ public class KFZSJs {
     }
 
     @JavascriptInterface
+    public String getIMEI() {
+        return DeviceUtil.getDeviceId(SheepApp.getInstance());
+    }
+    @JavascriptInterface
+    public String getPhoneModel() {
+        return SysAppUtil.getSystemModel();
+    }
+    @JavascriptInterface
     public void showTitleBar(final boolean isShow) {
         activity.runOnUiThread(new Runnable() {
             @Override

+ 58 - 25
app/src/main/java/com/sheep/gamegroup/view/activity/ActWeb.java

@@ -13,30 +13,28 @@ import android.support.annotation.RequiresApi;
 import android.support.v7.app.AlertDialog;
 import android.text.TextUtils;
 import android.view.View;
-import android.webkit.JavascriptInterface;
 import android.webkit.ValueCallback;
 import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 
-import com.sheep.gamegroup.absBase.BaseActivity;
-import com.sheep.gamegroup.util.ApiUtil;
+import com.sheep.gamegroup.absBase.IJumpWeb;
 import com.sheep.gamegroup.util.CommonUtil;
-import com.sheep.gamegroup.util.DataUtil;
-import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.LogUtil;
-import com.sheep.gamegroup.util.QQUtil;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.js.BaseActWeb;
 import com.sheep.gamegroup.util.js.KFZSJs;
+import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
-import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
+import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import com.yalantis.ucrop.util.FileUtils;
+import com.zhy.http.okhttp.OkHttpUtils;
+import com.zhy.http.okhttp.callback.StringCallback;
 
 import java.io.File;
 import java.io.IOException;
@@ -44,7 +42,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import butterknife.BindView;
-import rx.functions.Action1;
+import okhttp3.Call;
 
 
 /**
@@ -59,19 +57,22 @@ public class ActWeb extends BaseActWeb {
     View layout_navigationBar;
 
     private String title;//title为空时,不显示整个标题栏
-    private String url;
+    private boolean needJsInteract;//是否需要js交互
     private WebSettings webViewSettings;
 
     @Override
     protected int getLayoutId() {
-        return R.layout.act_web;
+        return R.layout.act_web_x5;
     }
 
     @RequiresApi(api = Build.VERSION_CODES.KITKAT)
     @Override
     public void initView() {
-        url = getIntent().getStringExtra("url");
-        title = getIntent().getStringExtra("title");//title为空时,不显示整个标题栏
+        Intent intent = getIntent();
+        String url = intent.getStringExtra(IJumpWeb.KEY_URL);
+        title = intent.getStringExtra(IJumpWeb.KEY_TITLE);//title为空时,不显示整个标题栏
+        needJsInteract = intent.getBooleanExtra(IJumpWeb.KEY_NEEDJSINTERACT, false);
+        String jsUrl = intent.getStringExtra(IJumpWeb.KEY_JSURL);
         if (!TextUtils.isEmpty(url)) {
             url = url.trim();
         }
@@ -91,8 +92,30 @@ public class ActWeb extends BaseActWeb {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             webViewSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
         }
+        if (TextUtils.isEmpty(jsUrl)) {
+            loadUrl(url);
+        } else {
+            initJsData(url, jsUrl);
+        }
+    }
+
+    //初始化js代码数据
+    private void initJsData(final String url, String jsUrl) {
+        OkHttpUtils.get()
+                .url(jsUrl)
+                .build()
+                .execute(new StringCallback() {
+                    @Override
+                    public void onError(Call call, Exception e, int id) {
+                        G.showToast(R.string.service_data_error);
+                    }
 
-        loadUrl();
+                    @Override
+                    public void onResponse(String response, int id) {
+                        js = response;
+                        loadUrl(url);
+                    }
+                });
     }
 
     @Override
@@ -146,13 +169,13 @@ public class ActWeb extends BaseActWeb {
 
     private String mCameraPhotoPath;
 
-    private void loadUrl() {
+    private void loadUrl(final String url) {
 
         mWebView.setWebChromeClient(new WebChromeClient() {
             @Override
             public void onReceivedTitle(WebView view, String title) {
                 super.onReceivedTitle(view, title);
-                if (ActWeb.this.title != null)
+                if (ActWeb.this.title == null)
                     TitleBarUtils
                             .getInstance()
                             .setTitle(ActWeb.this, title);
@@ -229,7 +252,6 @@ public class ActWeb extends BaseActWeb {
             }
         });
         mWebView.setWebViewClient(new WebViewClient() {
-
             @Override
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
                 LogUtil.println("ActWeb", "shouldOverrideUrlLoading", url);
@@ -260,12 +282,12 @@ public class ActWeb extends BaseActWeb {
                                 }).setNegativeButton("取消", null).show();
                     }
                     return true;
-                } else if(url.contains("17xmy.com")){
+                } else if (url.contains("17xmy.com")) {
                     Map<String, String> extraHeaders = new HashMap<>();
                     extraHeaders.put("Referer", "http://17xmy.com");
                     view.loadUrl(url, extraHeaders);
                     return true;
-                } else if(url.contains("kfzs.com") || (url.startsWith("http://10.8.") && TestUtil.isDev())){
+                } else if (url.contains("kfzs.com") || (url.startsWith("http://10.8.") && TestUtil.isDev())) {
                     Map<String, String> extraHeaders = new HashMap<>();
                     extraHeaders.put("Referer", "http://kfzs.com");
                     view.loadUrl(url, extraHeaders);
@@ -276,12 +298,6 @@ public class ActWeb extends BaseActWeb {
             }
 
             @Override
-            public void onPageCommitVisible(WebView view, String url) {
-                LogUtil.println("ActWeb", "onPageCommitVisible", url);
-                super.onPageCommitVisible(view, url);
-            }
-
-            @Override
             public void onPageStarted(WebView view, String url, Bitmap favicon) {
                 LogUtil.println("ActWeb", "onPageStarted", url);
                 super.onPageStarted(view, url, favicon);
@@ -292,10 +308,12 @@ public class ActWeb extends BaseActWeb {
                 LogUtil.println("ActWeb", "onPageFinished", url);
                 super.onPageFinished(view, url);
                 imgReset();
+                loadJs();
             }
         });
         webViewSettings.setJavaScriptEnabled(true);
-        mWebView.addJavascriptInterface(new KFZSJs(this), "kfzsjs");
+        if (needJsInteract)
+            mWebView.addJavascriptInterface(new KFZSJs(this), "kfzsjs");
         String loadUrl = addUrlToken(url);
         LogUtil.println("ActWeb loadUrl = " + loadUrl);
         if (CommonUtil.getInstance().judgeUrlPicture(url)) {
@@ -421,6 +439,21 @@ public class ActWeb extends BaseActWeb {
         });
     }
 
+    // 注入js函数监听
+    public void loadJs() {
+        if (TextUtils.isEmpty(js))
+            return;
+        ViewUtil.loadJs(mWebView, getJs());
+        LogUtil.println("ActWeb", "loadJs", js);
+    }
+
+    private String js;
+
+    private String getJs() {
+        String testJsStart = "alert('成功注入');";
+        return BuildConfig.DEBUG ? testJsStart + "\n" + js : js;
+    }
+
     @Override
     public boolean isResponseBack() {
         return responseBack;

+ 61 - 13
app/src/main/java/com/sheep/gamegroup/view/activity/ActWebX5.java

@@ -14,14 +14,17 @@ import android.support.v7.app.AlertDialog;
 import android.text.TextUtils;
 import android.view.View;
 
+import com.sheep.gamegroup.absBase.IJumpWeb;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.js.BaseActWeb;
 import com.sheep.gamegroup.util.js.KFZSJs;
+import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import com.tencent.smtt.sdk.ValueCallback;
@@ -30,6 +33,8 @@ import com.tencent.smtt.sdk.WebSettings;
 import com.tencent.smtt.sdk.WebView;
 import com.tencent.smtt.sdk.WebViewClient;
 import com.yalantis.ucrop.util.FileUtils;
+import com.zhy.http.okhttp.OkHttpUtils;
+import com.zhy.http.okhttp.callback.StringCallback;
 
 import java.io.File;
 import java.io.IOException;
@@ -37,6 +42,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import butterknife.BindView;
+import okhttp3.Call;
 
 
 /**
@@ -51,7 +57,7 @@ public class ActWebX5 extends BaseActWeb {
     View layout_navigationBar;
 
     private String title;//title为空时,不显示整个标题栏
-    private String url;
+    private boolean needJsInteract;//是否需要js交互
     private WebSettings webViewSettings;
 
     @Override
@@ -62,8 +68,11 @@ public class ActWebX5 extends BaseActWeb {
     @RequiresApi(api = Build.VERSION_CODES.KITKAT)
     @Override
     public void initView() {
-        url = getIntent().getStringExtra("url");
-        title = getIntent().getStringExtra("title");//title为空时,不显示整个标题栏
+        Intent intent = getIntent();
+        String url = intent.getStringExtra(IJumpWeb.KEY_URL);
+        title = intent.getStringExtra(IJumpWeb.KEY_TITLE);//title为空时,不显示整个标题栏
+        needJsInteract = intent.getBooleanExtra(IJumpWeb.KEY_NEEDJSINTERACT, false);
+        String jsUrl = intent.getStringExtra(IJumpWeb.KEY_JSURL);
         if (!TextUtils.isEmpty(url)) {
             url = url.trim();
         }
@@ -83,8 +92,30 @@ public class ActWebX5 extends BaseActWeb {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
 //            webViewSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
         }
+        if (TextUtils.isEmpty(jsUrl)) {
+            loadUrl(url);
+        } else {
+            initJsData(url, jsUrl);
+        }
+    }
 
-        loadUrl();
+    //初始化js代码数据
+    private void initJsData(final String url, String jsUrl) {
+        OkHttpUtils.get()
+                .url(jsUrl)
+                .build()
+                .execute(new StringCallback() {
+                    @Override
+                    public void onError(Call call, Exception e, int id) {
+                        G.showToast(R.string.service_data_error);
+                    }
+
+                    @Override
+                    public void onResponse(String response, int id) {
+                        js = response;
+                        loadUrl(url);
+                    }
+                });
     }
 
     @Override
@@ -138,7 +169,7 @@ public class ActWebX5 extends BaseActWeb {
 
     private String mCameraPhotoPath;
 
-    private void loadUrl() {
+    private void loadUrl(final String url) {
 
         mWebView.setWebChromeClient(new WebChromeClient() {
             @Override
@@ -277,10 +308,12 @@ public class ActWebX5 extends BaseActWeb {
                 LogUtil.println("ActWeb", "onPageFinished", url);
                 super.onPageFinished(view, url);
                 imgReset();
+                loadJs();
             }
         });
         webViewSettings.setJavaScriptEnabled(true);
-        mWebView.addJavascriptInterface(new KFZSJs(this), "kfzsjs");
+        if (needJsInteract)
+            mWebView.addJavascriptInterface(new KFZSJs(this), "kfzsjs");
         String loadUrl = addUrlToken(url);
         LogUtil.println("ActWeb loadUrl = " + loadUrl);
         if (CommonUtil.getInstance().judgeUrlPicture(url)) {
@@ -386,13 +419,13 @@ public class ActWebX5 extends BaseActWeb {
 
     private void imgReset() {
         ViewUtil.loadJs(mWebView, "(function(){" +
-                    "var objs = document.getElementsByTagName('img'); " +
-                    "for(var i=0;i<objs.length;i++)  " +
-                    "{"
-                    + "var img = objs[i];   " +
-                    " img.style.maxWidth = '100%';" +
-                    "}" +
-                    "})()");
+                "var objs = document.getElementsByTagName('img'); " +
+                "for(var i=0;i<objs.length;i++)  " +
+                "{"
+                + "var img = objs[i];   " +
+                " img.style.maxWidth = '100%';" +
+                "}" +
+                "})()");
     }
 
     private void runWebviewUrl(final String url) {
@@ -406,6 +439,21 @@ public class ActWebX5 extends BaseActWeb {
         });
     }
 
+    // 注入js函数监听
+    public void loadJs() {
+        if (TextUtils.isEmpty(js))
+            return;
+        ViewUtil.loadJs(mWebView, getJs());
+        LogUtil.println("ActWeb", "loadJs", js);
+    }
+
+    private String js;
+
+    private String getJs() {
+        String testJsStart = "alert('成功注入');";
+        return BuildConfig.DEBUG ? testJsStart + "\n" + js : js;
+    }
+
     @Override
     public boolean isResponseBack() {
         return responseBack;

+ 1 - 2
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtSmallSheep.java

@@ -79,7 +79,6 @@ import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
-import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.MyGridview;
 import com.sheep.gamegroup.util.MyListview;
 import com.sheep.gamegroup.util.RefreshUtil;
@@ -1287,7 +1286,7 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
                 addNewTask();
                 SheepApp.getInstance().setShowQB(isShowQB);
                 SheepApp.getInstance().setShowMidong(isShowMd);
-                full_home_list_rv.getAdapter().notifyDataSetChanged();
+                ViewUtil.notifyDataSetChanged(full_home_list_rv);
                 adpHomeListGrideview.notifyDataSetChanged();
                 adpHomeListListview.notifyDataSetChanged();
                 home_list_gridview_listview.setVisibility(homeListEntitysListview.isEmpty() ? View.GONE : View.VISIBLE);