109 lines
3.8 KiB
Java
109 lines
3.8 KiB
Java
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));
|
|
}
|
|
}
|