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.shayu.onetoone.utils.UserManager; import com.yunbao.common.Constants; import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.event.JavascriptInterfaceEvent; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.utils.AndroidBug5497Workaround; import com.yunbao.common.utils.Bus; 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 com.yunbao.common.utils.WordUtil; import com.yunbao.share.ui.InvitePopDialog; import androidx.annotation.RequiresApi; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @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) { Bus.getOn(this); webView = findViewById(R.id.webView); titleString = getIntent().getStringExtra("title"); if (!StringUtil.isEmpty(titleString)) { setTitle(titleString); } initWebView(); } @Override protected void onDestroy() { super.onDestroy(); Bus.getOff(this); } 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); } String url = getIntent().getStringExtra("url"); if(StringUtil.isEmpty(url)){ finish(); return; } if (!url.contains("token")&&url.startsWith("http")) { IMLoginModel userInfo = UserManager.getUserBean().getUser(); url += "&uid=" + userInfo.getId() + "&token=" + userInfo.getToken() + "&isZh=" + (WordUtil.isNewZh() ? "1" : "0"); } Log.i("WebView",url); webView.loadUrl(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)); } @Subscribe(threadMode = ThreadMode.MAIN) public void event(JavascriptInterfaceEvent event){ if(event.getMethod().equals("androidInviteShare")){ new InvitePopDialog(mContext) .setTitle("快來認識更多有趣的朋友吧!") .setUrl(event.getData()) .showDialog(); } } }