package com.demo.app.ui.common;
|
|
import android.app.Activity;
|
import android.graphics.PixelFormat;
|
import android.net.http.SslError;
|
import android.os.Bundle;
|
import android.util.Log;
|
import android.view.KeyEvent;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.ViewGroup;
|
import android.webkit.SslErrorHandler;
|
import android.webkit.WebChromeClient;
|
import android.webkit.WebSettings;
|
import android.webkit.WebView;
|
import android.webkit.WebViewClient;
|
import android.widget.ProgressBar;
|
import android.widget.TextView;
|
|
|
import com.demo.app.R;
|
import com.demo.app.utils.browser.BaseJavaInterface;
|
import com.demo.lib.common.util.common.StringUtils;
|
|
import androidx.fragment.app.FragmentActivity;
|
|
public class SimpleBrowserActivity extends FragmentActivity implements OnClickListener {
|
private final static String TAG = "SimpleBrowserActivity";
|
|
private TextView tv_top_bar_left;
|
private TextView tv_top_bar_left2;
|
private TextView tv_top_bar_middle;
|
private WebView webview;
|
ProgressBar progressBar;
|
|
|
private void initX5WebView() {
|
webview = findViewById(R.id.webview);
|
webview.setWebViewClient(new WebViewClient() {
|
@Override
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
Log.i(TAG, url);
|
if (url != null && (!url.startsWith("http"))) {
|
return true;
|
}
|
return super.shouldOverrideUrlLoading(view, url);
|
}
|
|
|
@Override
|
public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) {
|
sslErrorHandler.proceed();
|
}
|
|
});
|
|
webview.setWebChromeClient(new WebChromeClient() {
|
|
@Override
|
public void onReceivedTitle(WebView view, String title) {
|
tv_top_bar_middle.setText(title);
|
}
|
|
@Override
|
public void onProgressChanged(WebView webView, int i) {
|
if (i == 100) {
|
progressBar.setVisibility(View.GONE);
|
} else {
|
if (View.INVISIBLE == progressBar.getVisibility()) {
|
progressBar.setVisibility(View.VISIBLE);
|
}
|
progressBar.setProgress(i);
|
}
|
super.onProgressChanged(webView, i);
|
}
|
});
|
WebSettings webSetting = webview.getSettings();
|
webSetting.setJavaScriptEnabled(true);
|
webSetting.setTextZoom(100);
|
webview.addJavascriptInterface(new BaseJavaInterface(this), "yestv");
|
}
|
|
private boolean needSetResult = false;
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
getWindow().setFormat(PixelFormat.TRANSLUCENT);
|
setContentView(R.layout.activity_simple_browser);
|
tv_top_bar_left = findViewById(R.id.tv_top_bar_left);
|
tv_top_bar_left2 = findViewById(R.id.tv_top_bar_left2);
|
tv_top_bar_left2.setVisibility(View.VISIBLE);
|
tv_top_bar_middle = findViewById(R.id.tv_top_bar_middle);
|
|
tv_top_bar_left2.setText("关闭");
|
try {
|
if (getIntent().getBooleanExtra("close", true)) {
|
String close = getIntent().getStringExtra("close");
|
if (!StringUtils.isEmpty(close)) {
|
tv_top_bar_left2.setVisibility(Boolean.parseBoolean(close) ? View.VISIBLE : View.GONE);
|
} else
|
tv_top_bar_left2.setVisibility(View.VISIBLE);
|
} else
|
tv_top_bar_left2.setVisibility(View.GONE);
|
} catch (Exception e) {
|
|
}
|
|
tv_top_bar_left.setOnClickListener(this);
|
tv_top_bar_left2.setOnClickListener(this);
|
|
progressBar = findViewById(R.id.myProgressBar);
|
progressBar.setMax(100);
|
progressBar.setProgressDrawable(this.getResources()
|
.getDrawable(R.drawable.color_progressbar));
|
initX5WebView();
|
String url = getIntent().getStringExtra("url");
|
webview.loadUrl(url);
|
needSetResult = getIntent().getBooleanExtra("result", false);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
if (webview != null) {
|
webview.loadUrl("javascript:onResume()");
|
}
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
}
|
|
@Override
|
protected void onDestroy() {
|
if (webview != null) {
|
webview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
|
webview.clearHistory();
|
|
((ViewGroup) webview.getParent()).removeView(webview);
|
webview.destroy();
|
webview = null;
|
}
|
super.onDestroy();
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_top_bar_left: {
|
if (!webview.canGoBack())
|
finishPage();
|
else {
|
webview.goBack();
|
}
|
}
|
break;
|
case R.id.tv_top_bar_left2: {
|
finishPage();
|
}
|
break;
|
default:
|
break;
|
}
|
}
|
|
private void finishPage() {
|
if (needSetResult)
|
setResult(Activity.RESULT_OK);
|
finish();
|
}
|
|
// 设置回退
|
// 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
|
@Override
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
|
webview.goBack(); // goBack()表示返回WebView的上一页面
|
return true;
|
} else {
|
if (keyCode == KeyEvent.KEYCODE_BACK) {
|
finishPage();
|
}
|
}
|
return super.onKeyDown(keyCode, event);
|
}
|
}
|