package com.shayu.onetoone.activity; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.webkit.ValueCallback; import android.webkit.WebChromeClient; import android.webkit.WebResourceRequest; import android.webkit.WebResourceResponse; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import com.alibaba.android.arouter.facade.annotation.Route; import com.shayu.onetoone.R; import com.shayu.onetoone.manager.RouteManager; import com.yunbao.common.Constants; import com.yunbao.common.utils.AndroidBug5497Workaround; import com.yunbao.common.utils.JavascriptInterfaceUtils; import com.yunbao.common.utils.L; import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.ToastUtil; import androidx.annotation.RequiresApi; @Route(path = RouteManager.ACTIVITY_WEB_VIEW) public class WebViewActivity extends AbsOTOActivity { WebView webView; String titleString; @Override protected int getLayoutId() { return R.layout.activity_webview; } @Override protected void main(Bundle savedInstanceState) { webView = findViewById(R.id.webView); titleString = getIntent().getStringExtra("title"); if (!StringUtil.isEmpty(titleString)) { setTitle(titleString); } initWebView(); } private void initWebView() { WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); // 是否开启JS支持 settings.setJavaScriptCanOpenWindowsAutomatically(true); // 是否允许JS打开新窗口 settings.setDomStorageEnabled(true); webView.addJavascriptInterface(JavascriptInterfaceUtils.getInstance().setmContext(this, webView) .setPageClose(true) .setLiveZhuangBana(false), "androidObject"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } webView.loadUrl(getIntent().getStringExtra("url")); AndroidBug5497Workaround.assistActivity(this); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { L.e("H5-------->" + url); if (url.startsWith(Constants.COPY_PREFIX)) { String content = url.substring(Constants.COPY_PREFIX.length()); if (!TextUtils.isEmpty(content)) { copy(content); } } else { view.loadUrl(url); } return true; } @Override public void onPageFinished(WebView view, String url) { if (TextUtils.isEmpty(titleString)) { setTitle(view.getTitle()); } else { setTitle(titleString); } int height = view.getMeasuredHeight(); Log.e("网页高度", height + ""); } @Override public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { super.onReceivedHttpError(view, request, errorResponse); } }); } /** * 复制到剪贴板 */ private void copy(String content) { ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); ClipData clipData = ClipData.newPlainText("text", content); cm.setPrimaryClip(clipData); ToastUtil.show(getString(R.string.copy_success)); } }