|
@@ -13,30 +13,28 @@ import android.support.annotation.RequiresApi;
|
|
|
import android.support.v7.app.AlertDialog;
|
|
import android.support.v7.app.AlertDialog;
|
|
|
import android.text.TextUtils;
|
|
import android.text.TextUtils;
|
|
|
import android.view.View;
|
|
import android.view.View;
|
|
|
-import android.webkit.JavascriptInterface;
|
|
|
|
|
import android.webkit.ValueCallback;
|
|
import android.webkit.ValueCallback;
|
|
|
import android.webkit.WebChromeClient;
|
|
import android.webkit.WebChromeClient;
|
|
|
import android.webkit.WebSettings;
|
|
import android.webkit.WebSettings;
|
|
|
import android.webkit.WebView;
|
|
import android.webkit.WebView;
|
|
|
import android.webkit.WebViewClient;
|
|
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.CommonUtil;
|
|
|
-import com.sheep.gamegroup.util.DataUtil;
|
|
|
|
|
-import com.sheep.gamegroup.util.Jump2View;
|
|
|
|
|
import com.sheep.gamegroup.util.LogUtil;
|
|
import com.sheep.gamegroup.util.LogUtil;
|
|
|
-import com.sheep.gamegroup.util.QQUtil;
|
|
|
|
|
import com.sheep.gamegroup.util.TestUtil;
|
|
import com.sheep.gamegroup.util.TestUtil;
|
|
|
import com.sheep.gamegroup.util.ViewUtil;
|
|
import com.sheep.gamegroup.util.ViewUtil;
|
|
|
import com.sheep.gamegroup.util.js.BaseActWeb;
|
|
import com.sheep.gamegroup.util.js.BaseActWeb;
|
|
|
import com.sheep.gamegroup.util.js.KFZSJs;
|
|
import com.sheep.gamegroup.util.js.KFZSJs;
|
|
|
|
|
+import com.sheep.jiuyan.samllsheep.BuildConfig;
|
|
|
import com.sheep.jiuyan.samllsheep.R;
|
|
import com.sheep.jiuyan.samllsheep.R;
|
|
|
import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
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.SpUtils;
|
|
|
import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
|
|
import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
|
|
|
import com.yalantis.ucrop.util.FileUtils;
|
|
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.File;
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
@@ -44,7 +42,7 @@ import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
import butterknife.BindView;
|
|
import butterknife.BindView;
|
|
|
-import rx.functions.Action1;
|
|
|
|
|
|
|
+import okhttp3.Call;
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -59,19 +57,22 @@ public class ActWeb extends BaseActWeb {
|
|
|
View layout_navigationBar;
|
|
View layout_navigationBar;
|
|
|
|
|
|
|
|
private String title;//title为空时,不显示整个标题栏
|
|
private String title;//title为空时,不显示整个标题栏
|
|
|
- private String url;
|
|
|
|
|
|
|
+ private boolean needJsInteract;//是否需要js交互
|
|
|
private WebSettings webViewSettings;
|
|
private WebSettings webViewSettings;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
protected int getLayoutId() {
|
|
protected int getLayoutId() {
|
|
|
- return R.layout.act_web;
|
|
|
|
|
|
|
+ return R.layout.act_web_x5;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
|
|
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
|
|
|
@Override
|
|
@Override
|
|
|
public void initView() {
|
|
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)) {
|
|
if (!TextUtils.isEmpty(url)) {
|
|
|
url = url.trim();
|
|
url = url.trim();
|
|
|
}
|
|
}
|
|
@@ -91,8 +92,30 @@ public class ActWeb extends BaseActWeb {
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
|
|
webViewSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
|
|
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
|
|
@Override
|
|
@@ -146,13 +169,13 @@ public class ActWeb extends BaseActWeb {
|
|
|
|
|
|
|
|
private String mCameraPhotoPath;
|
|
private String mCameraPhotoPath;
|
|
|
|
|
|
|
|
- private void loadUrl() {
|
|
|
|
|
|
|
+ private void loadUrl(final String url) {
|
|
|
|
|
|
|
|
mWebView.setWebChromeClient(new WebChromeClient() {
|
|
mWebView.setWebChromeClient(new WebChromeClient() {
|
|
|
@Override
|
|
@Override
|
|
|
public void onReceivedTitle(WebView view, String title) {
|
|
public void onReceivedTitle(WebView view, String title) {
|
|
|
super.onReceivedTitle(view, title);
|
|
super.onReceivedTitle(view, title);
|
|
|
- if (ActWeb.this.title != null)
|
|
|
|
|
|
|
+ if (ActWeb.this.title == null)
|
|
|
TitleBarUtils
|
|
TitleBarUtils
|
|
|
.getInstance()
|
|
.getInstance()
|
|
|
.setTitle(ActWeb.this, title);
|
|
.setTitle(ActWeb.this, title);
|
|
@@ -229,7 +252,6 @@ public class ActWeb extends BaseActWeb {
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
mWebView.setWebViewClient(new WebViewClient() {
|
|
mWebView.setWebViewClient(new WebViewClient() {
|
|
|
-
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
|
|
LogUtil.println("ActWeb", "shouldOverrideUrlLoading", url);
|
|
LogUtil.println("ActWeb", "shouldOverrideUrlLoading", url);
|
|
@@ -260,12 +282,12 @@ public class ActWeb extends BaseActWeb {
|
|
|
}).setNegativeButton("取消", null).show();
|
|
}).setNegativeButton("取消", null).show();
|
|
|
}
|
|
}
|
|
|
return true;
|
|
return true;
|
|
|
- } else if(url.contains("17xmy.com")){
|
|
|
|
|
|
|
+ } else if (url.contains("17xmy.com")) {
|
|
|
Map<String, String> extraHeaders = new HashMap<>();
|
|
Map<String, String> extraHeaders = new HashMap<>();
|
|
|
extraHeaders.put("Referer", "http://17xmy.com");
|
|
extraHeaders.put("Referer", "http://17xmy.com");
|
|
|
view.loadUrl(url, extraHeaders);
|
|
view.loadUrl(url, extraHeaders);
|
|
|
return true;
|
|
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<>();
|
|
Map<String, String> extraHeaders = new HashMap<>();
|
|
|
extraHeaders.put("Referer", "http://kfzs.com");
|
|
extraHeaders.put("Referer", "http://kfzs.com");
|
|
|
view.loadUrl(url, extraHeaders);
|
|
view.loadUrl(url, extraHeaders);
|
|
@@ -276,12 +298,6 @@ public class ActWeb extends BaseActWeb {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@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) {
|
|
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
|
|
LogUtil.println("ActWeb", "onPageStarted", url);
|
|
LogUtil.println("ActWeb", "onPageStarted", url);
|
|
|
super.onPageStarted(view, url, favicon);
|
|
super.onPageStarted(view, url, favicon);
|
|
@@ -292,10 +308,12 @@ public class ActWeb extends BaseActWeb {
|
|
|
LogUtil.println("ActWeb", "onPageFinished", url);
|
|
LogUtil.println("ActWeb", "onPageFinished", url);
|
|
|
super.onPageFinished(view, url);
|
|
super.onPageFinished(view, url);
|
|
|
imgReset();
|
|
imgReset();
|
|
|
|
|
+ loadJs();
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
webViewSettings.setJavaScriptEnabled(true);
|
|
webViewSettings.setJavaScriptEnabled(true);
|
|
|
- mWebView.addJavascriptInterface(new KFZSJs(this), "kfzsjs");
|
|
|
|
|
|
|
+ if (needJsInteract)
|
|
|
|
|
+ mWebView.addJavascriptInterface(new KFZSJs(this), "kfzsjs");
|
|
|
String loadUrl = addUrlToken(url);
|
|
String loadUrl = addUrlToken(url);
|
|
|
LogUtil.println("ActWeb loadUrl = " + loadUrl);
|
|
LogUtil.println("ActWeb loadUrl = " + loadUrl);
|
|
|
if (CommonUtil.getInstance().judgeUrlPicture(url)) {
|
|
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
|
|
@Override
|
|
|
public boolean isResponseBack() {
|
|
public boolean isResponseBack() {
|
|
|
return responseBack;
|
|
return responseBack;
|