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