Files
pdlivexp/OneToOne/src/main/java/com/shayu/onetoone/activity/WebViewActivity.java
2023-11-02 13:38:55 +08:00

145 lines
5.1 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.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();
}
}
}