From 73f131e9fc80e0d78491bd3247e3ef6b5f6f2c3b Mon Sep 17 00:00:00 2001 From: wumeng1 <1yw@Mirko> Date: Tue, 29 Jun 2021 17:20:22 +0800 Subject: [PATCH] #update webview --- .../lib_webview/CommonWebActivity.java | 60 ++++++++++++++----- 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/lib_webview/src/main/java/com/mirkowu/lib_webview/CommonWebActivity.java b/lib_webview/src/main/java/com/mirkowu/lib_webview/CommonWebActivity.java index 75a77ab..412cfe2 100644 --- a/lib_webview/src/main/java/com/mirkowu/lib_webview/CommonWebActivity.java +++ b/lib_webview/src/main/java/com/mirkowu/lib_webview/CommonWebActivity.java @@ -27,7 +27,7 @@ * 1.支持X5 * 2.支持JsBridge */ -public class CommonWebActivity extends BaseMVMActivity { +public class CommonWebActivity extends BaseMVMActivity { public static final String KEY_TITLE = "title"; public static final String KEY_URL = "url"; @@ -42,11 +42,11 @@ public static void start(Context context, String title, String url) { context.startActivity(starter); } - private Toolbar mToolbar; + protected Toolbar mToolbar; protected CommonWebView mWebView; - private ProgressBar mProgressBar; - private IWebViewCallBack mWebViewCallBack; - private DefaultWebViewFileChooser mFileChooser; + protected ProgressBar mProgressBar; + protected IWebViewCallBack mWebViewCallBack; + protected DefaultWebViewFileChooser mFileChooser; @Override protected BaseMediator initMediator() { @@ -65,26 +65,28 @@ protected void initialize() { String title = getIntent().getStringExtra(KEY_TITLE); String url = getIntent().getStringExtra(KEY_URL); - mToolbar = findViewById(R.id.mToolbar); - mProgressBar = findViewById(R.id.mProgressBar); - mWebView = findViewById(R.id.mWebView); - getLifecycle().addObserver(mWebView); + initView(); WebConfig webConfig = getWebConfig(); - mWebViewCallBack = webConfig.getWebViewCallBack(); - - mProgressBar.setVisibility(webConfig.isShowProgress() ? View.VISIBLE : View.GONE); mToolbar.setVisibility(webConfig.isShowToolbar() ? View.VISIBLE : View.GONE); mToolbar.setShowBackIcon(webConfig.isShowBack()); mToolbar.setTitle(title); configWebSettings(webConfig); - mWebView.clearHistory(); - mWebView.loadUrl(url); + loadUrl(url); } + protected void initView() { + mToolbar = findViewById(R.id.mToolbar); + mProgressBar = findViewById(R.id.mProgressBar); + mWebView = findViewById(R.id.mWebView); + getLifecycle().addObserver(mWebView); + } + + protected void configWebSettings(WebConfig webConfig) { + mWebViewCallBack = webConfig.getWebViewCallBack(); WebSettingUtil.toSetting(mWebView, webConfig.getUserAgent()); mWebView.setHeaders(webConfig.getHeaders()); mWebView.setWebViewClient(new BaseWebViewClient(mWebView, mWebViewCallBack)); @@ -93,6 +95,13 @@ protected void configWebSettings(WebConfig webConfig) { mWebView.setWebChromeClient(new BaseWebChromeClient(mFileChooser, mProgressBar)); } + protected void loadUrl(String url) { + mWebView.loadUrl(url); + } + + protected void clearHistory() { + mWebView.clearHistory(); + } protected WebConfig getWebConfig() { return new WebConfig() @@ -130,6 +139,10 @@ public T jsCallAndroid(String action, Object content, Class t) { @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); + handleWebResult(requestCode, resultCode, data); + } + + private void handleWebResult(int requestCode, int resultCode, Intent data) { if (mFileChooser != null) { mFileChooser.onActivityResult(mWebView, requestCode, resultCode, data); } @@ -137,13 +150,28 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten @Override public boolean onKeyDown(int keyCode, KeyEvent event) { + if (handleWebBack(keyCode, event)) { + return true; + } + + return super.onKeyDown(keyCode, event); + } + + /** + * 处理返回键 + * + * @param keyCode + * @param event + * @return + */ + protected boolean handleWebBack(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (mWebView != null && mWebView.canGoBack()) { mWebView.goBack(); return true; } } - return super.onKeyDown(keyCode, event); + return false; } /** @@ -151,7 +179,7 @@ public boolean onKeyDown(int keyCode, KeyEvent event) { * * @param content */ - void loadHtmlText(String content) { + protected void loadHtmlText(String content) { WebSettings webSettings = mWebView.getSettings(); //设置自适应屏幕,两者合用 webSettings.setUseWideViewPort(false); //将图片调整到适合webview的大小