|
|
@@ -0,0 +1,266 @@
|
|
|
+package com.uas.module.widget.base;
|
|
|
+
|
|
|
+import android.content.Intent;
|
|
|
+import android.graphics.Bitmap;
|
|
|
+import android.os.Bundle;
|
|
|
+import android.support.annotation.ColorInt;
|
|
|
+import android.support.annotation.LayoutRes;
|
|
|
+import android.support.annotation.NonNull;
|
|
|
+import android.support.annotation.Nullable;
|
|
|
+import android.support.v7.app.AppCompatActivity;
|
|
|
+import android.util.Log;
|
|
|
+import android.view.KeyEvent;
|
|
|
+import android.view.View;
|
|
|
+import android.view.ViewGroup;
|
|
|
+import android.webkit.DownloadListener;
|
|
|
+import android.webkit.WebResourceRequest;
|
|
|
+import android.webkit.WebView;
|
|
|
+
|
|
|
+import com.just.agentweb.AgentWeb;
|
|
|
+import com.just.agentweb.AgentWebSettingsImpl;
|
|
|
+import com.just.agentweb.AgentWebUIControllerImplBase;
|
|
|
+import com.just.agentweb.DefaultWebClient;
|
|
|
+import com.just.agentweb.IAgentWebSettings;
|
|
|
+import com.just.agentweb.IWebLayout;
|
|
|
+import com.just.agentweb.MiddlewareWebChromeBase;
|
|
|
+import com.just.agentweb.MiddlewareWebClientBase;
|
|
|
+import com.just.agentweb.PermissionInterceptor;
|
|
|
+import com.just.agentweb.WebChromeClient;
|
|
|
+import com.just.agentweb.WebViewClient;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by cenxiaozhong on 2017/7/22.
|
|
|
+ * <p>
|
|
|
+ * source code https://github.com/Justson/AgentWeb
|
|
|
+ */
|
|
|
+
|
|
|
+public abstract class BaseAgentWebActivity extends AppCompatActivity {
|
|
|
+
|
|
|
+ protected AgentWeb mAgentWeb;
|
|
|
+ private AgentWebUIControllerImplBase mAgentWebUIController;
|
|
|
+ private ErrorLayoutEntity mErrorLayoutEntity;
|
|
|
+ private MiddlewareWebChromeBase mMiddleWareWebChrome;
|
|
|
+ private MiddlewareWebClientBase mMiddleWareWebClient;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
|
+ super.onCreate(savedInstanceState);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setContentView(@LayoutRes int layoutResID) {
|
|
|
+ super.setContentView(layoutResID);
|
|
|
+ buildAgentWeb();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setContentView(View view) {
|
|
|
+ super.setContentView(view);
|
|
|
+ buildAgentWeb();
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void buildAgentWeb() {
|
|
|
+ ErrorLayoutEntity mErrorLayoutEntity = getErrorLayoutEntity();
|
|
|
+ mAgentWeb = AgentWeb.with(this)
|
|
|
+ .setAgentWebParent(getAgentWebParent(), new ViewGroup.LayoutParams(-1, -1))
|
|
|
+ .useDefaultIndicator(getIndicatorColor(), getIndicatorHeight())
|
|
|
+ .setWebChromeClient(getWebChromeClient())
|
|
|
+ .setWebViewClient(getWebViewClient())
|
|
|
+ .setWebView(getWebView())
|
|
|
+ .setPermissionInterceptor(getPermissionInterceptor())
|
|
|
+ .setWebLayout(getWebLayout())
|
|
|
+ .setAgentWebUIController(getAgentWebUIController())
|
|
|
+ .interceptUnkownUrl()
|
|
|
+ .setOpenOtherPageWays(getOpenOtherAppWay())
|
|
|
+ .useMiddlewareWebChrome(getMiddleWareWebChrome())
|
|
|
+ .useMiddlewareWebClient(getMiddleWareWebClient())
|
|
|
+ .setAgentWebWebSettings(getAgentWebSettings())
|
|
|
+ .setMainFrameErrorView(mErrorLayoutEntity.layoutRes, mErrorLayoutEntity.reloadId)
|
|
|
+ .setSecurityType(AgentWeb.SecurityType.STRICT_CHECK)
|
|
|
+ .createAgentWeb()
|
|
|
+ .ready()
|
|
|
+ .go(getUrl())
|
|
|
+ .clearWebCache();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ protected @NonNull
|
|
|
+ ErrorLayoutEntity getErrorLayoutEntity() {
|
|
|
+ if (this.mErrorLayoutEntity == null) {
|
|
|
+ this.mErrorLayoutEntity = new ErrorLayoutEntity();
|
|
|
+ }
|
|
|
+ return mErrorLayoutEntity;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected AgentWeb getAgentWeb() {
|
|
|
+ return this.mAgentWeb;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ protected static class ErrorLayoutEntity {
|
|
|
+ private int layoutRes = com.just.agentweb.R.layout.agentweb_error_page;
|
|
|
+ private int reloadId;
|
|
|
+
|
|
|
+ public void setLayoutRes(int layoutRes) {
|
|
|
+ this.layoutRes = layoutRes;
|
|
|
+ if (layoutRes <= 0) {
|
|
|
+ layoutRes = -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setReloadId(int reloadId) {
|
|
|
+ this.reloadId = reloadId;
|
|
|
+ if (reloadId <= 0) {
|
|
|
+ reloadId = -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
|
|
|
+
|
|
|
+ if (mAgentWeb != null && mAgentWeb.handleKeyEvent(keyCode, event)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return super.onKeyDown(keyCode, event);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onPause() {
|
|
|
+ if (mAgentWeb != null) {
|
|
|
+ mAgentWeb.getWebLifeCycle().onPause();
|
|
|
+ }
|
|
|
+ super.onPause();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onResume() {
|
|
|
+ if (mAgentWeb != null) {
|
|
|
+ mAgentWeb.getWebLifeCycle().onResume();
|
|
|
+ }
|
|
|
+ super.onResume();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
+ super.onActivityResult(requestCode, resultCode, data);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onDestroy() {
|
|
|
+ if (mAgentWeb != null) {
|
|
|
+ mAgentWeb.getWebLifeCycle().onDestroy();
|
|
|
+ }
|
|
|
+ super.onDestroy();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ protected @Nullable
|
|
|
+ DownloadListener getDownloadListener() {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ protected void setTitle(WebView view, String title) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ protected
|
|
|
+ @Nullable
|
|
|
+ String getUrl() {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public @Nullable
|
|
|
+ IAgentWebSettings getAgentWebSettings() {
|
|
|
+ return AgentWebSettingsImpl.getInstance();
|
|
|
+ }
|
|
|
+
|
|
|
+ protected abstract @NonNull
|
|
|
+ ViewGroup getAgentWebParent();
|
|
|
+
|
|
|
+ protected @Nullable
|
|
|
+ WebChromeClient getWebChromeClient() {
|
|
|
+ return new WebChromeClient() {
|
|
|
+ @Override
|
|
|
+ public void onProgressChanged(WebView view, int newProgress) {
|
|
|
+ //do you work
|
|
|
+// Log.i("Info","onProgress:"+newProgress);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onReceivedTitle(WebView view, String title) {
|
|
|
+ super.onReceivedTitle(view, title);
|
|
|
+// if (mTitleTextView != null) {
|
|
|
+// mTitleTextView.setText(title);
|
|
|
+// }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ protected @ColorInt
|
|
|
+ int getIndicatorColor() {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected int getIndicatorHeight() {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected @Nullable
|
|
|
+ WebViewClient getWebViewClient() {
|
|
|
+ return new WebViewClient() {
|
|
|
+ @Override
|
|
|
+ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
|
|
|
+ return super.shouldOverrideUrlLoading(view, request);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
|
|
+ //do you work
|
|
|
+ Log.i("Info", "BaseWebActivity onPageStarted");
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ protected @Nullable
|
|
|
+ WebView getWebView() {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected @Nullable
|
|
|
+ IWebLayout getWebLayout() {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected @Nullable
|
|
|
+ PermissionInterceptor getPermissionInterceptor() {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public @Nullable
|
|
|
+ AgentWebUIControllerImplBase getAgentWebUIController() {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public @Nullable
|
|
|
+ DefaultWebClient.OpenOtherPageWays getOpenOtherAppWay() {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected @NonNull
|
|
|
+ MiddlewareWebChromeBase getMiddleWareWebChrome() {
|
|
|
+ return this.mMiddleWareWebChrome = new MiddlewareWebChromeBase() {
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ protected @NonNull
|
|
|
+ MiddlewareWebClientBase getMiddleWareWebClient() {
|
|
|
+ return this.mMiddleWareWebClient = new MiddlewareWebClientBase() {
|
|
|
+ };
|
|
|
+ }
|
|
|
+}
|