341 lines
13 KiB
Java
341 lines
13 KiB
Java
package com.web.dmcslot;
|
||
|
||
import android.annotation.TargetApi;
|
||
import android.content.ActivityNotFoundException;
|
||
import android.content.Intent;
|
||
import android.graphics.Bitmap;
|
||
import android.net.Uri;
|
||
import android.net.http.SslError;
|
||
import android.os.Build;
|
||
import android.os.Bundle;
|
||
import android.os.Message;
|
||
import android.view.KeyEvent;
|
||
import android.view.MotionEvent;
|
||
import android.view.View;
|
||
import android.view.WindowManager;
|
||
import android.widget.FrameLayout;
|
||
import android.widget.ImageView;
|
||
import android.widget.LinearLayout;
|
||
import android.widget.ProgressBar;
|
||
import android.widget.Toast;
|
||
|
||
import androidx.annotation.Nullable;
|
||
import androidx.appcompat.app.ActionBar;
|
||
import androidx.appcompat.app.AppCompatActivity;
|
||
|
||
import com.tencent.smtt.export.external.interfaces.ConsoleMessage;
|
||
import com.tencent.smtt.export.external.interfaces.WebResourceRequest;
|
||
import com.tencent.smtt.sdk.ValueCallback;
|
||
import com.tencent.smtt.sdk.WebChromeClient;
|
||
import com.tencent.smtt.sdk.WebSettings;
|
||
import com.tencent.smtt.sdk.WebView;
|
||
import com.tencent.smtt.sdk.WebViewClient;
|
||
|
||
import java.io.UnsupportedEncodingException;
|
||
import java.net.URLEncoder;
|
||
import java.util.Map;
|
||
|
||
import com.web.dmcslot.appdown.AppUpdater;
|
||
import com.web.dmcslot.appdown.UpdateConfig;
|
||
import com.web.dmcslot.appdown.constant.Constants;
|
||
import com.web.dmcslot.appdown.util.AppUtils;
|
||
import com.web.dmcslot.appdown.util.NotificationUtils;
|
||
|
||
public class WebView2Activity extends AppCompatActivity {
|
||
|
||
private String url;
|
||
WebView webView;
|
||
ImageView show_top_v;
|
||
ImageView menu_iv;
|
||
private ImageView helpIv;
|
||
private LinearLayout showTopLy;
|
||
private FrameLayout videoContainer;
|
||
private ImageView backIv;
|
||
private ProgressBar progressBar;
|
||
private View topVvvv;
|
||
|
||
|
||
@Override
|
||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||
getWindow().setNavigationBarColor(getColor(R.color.white));
|
||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
||
|
||
super.onCreate(savedInstanceState);
|
||
View decor = getWindow().getDecorView();
|
||
getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
|
||
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||
ActionBar actionBar = getSupportActionBar();
|
||
if (actionBar != null) {
|
||
actionBar.hide();
|
||
}
|
||
setContentView(R.layout.activity_webview);
|
||
findViewById(R.id.back_iv).setOnClickListener(view -> finish());
|
||
url = getIntent().getStringExtra("url");
|
||
initView();
|
||
}
|
||
|
||
private ValueCallback<Uri[]> mUploadCallbackForHighApi;
|
||
|
||
public void initView() {
|
||
topVvvv = (View) findViewById(R.id.top_vvvv);
|
||
webView = findViewById(R.id.webview);
|
||
show_top_v = findViewById(R.id.show_top_v);
|
||
showTopLy = findViewById(R.id.show_top_ly);
|
||
videoContainer = (FrameLayout) findViewById(R.id.videoContainer);
|
||
backIv = (ImageView) findViewById(R.id.back_iv);
|
||
progressBar = (ProgressBar) findViewById(R.id.progressbar);
|
||
WebSettings settings = webView.getSettings();
|
||
settings.setDomStorageEnabled(true);
|
||
settings.setAppCacheEnabled(true);
|
||
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
|
||
settings.setJavaScriptEnabled(true);
|
||
settings.setLoadWithOverviewMode(true);
|
||
// 设置允许访问文件数据
|
||
settings.setAllowFileAccess(true);
|
||
settings.setAllowContentAccess(true);
|
||
settings.setDatabaseEnabled(true);
|
||
settings.setSavePassword(false);
|
||
settings.setSaveFormData(false);
|
||
settings.setUseWideViewPort(true);
|
||
settings.setBuiltInZoomControls(true);
|
||
settings.setPluginState(WebSettings.PluginState.ON);
|
||
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
|
||
webView.setFocusable(true);
|
||
webView.setFocusableInTouchMode(true);
|
||
webView.getSettings().setSupportMultipleWindows(true);
|
||
|
||
settings.setSupportZoom(false);
|
||
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
|
||
// webView.setHorizontalScrollbarOverlay(true);
|
||
webView.setHorizontalScrollBarEnabled(true);
|
||
webView.requestFocus();
|
||
// webView.setBackgroundColor(getColor(R.color.black));
|
||
settings.setJavaScriptCanOpenWindowsAutomatically(false);
|
||
settings.setMediaPlaybackRequiresUserGesture(false);
|
||
|
||
// 设置在WebView内部是否允许通过file url加载的 Js代码读取其他的本地文件
|
||
// Android 4.1前默认允许,4.1后默认禁止
|
||
settings.setAllowFileAccessFromFileURLs(true);
|
||
// 设置WebView内部是否允许通过 file url 加载的 Javascript 可以访问其他的源(包括http、https等源)
|
||
// Android 4.1前默认允许,4.1后默认禁止
|
||
settings.setAllowUniversalAccessFromFileURLs(true);
|
||
|
||
// settings.setBuiltInZoomControls(false); // 启用缩放功能
|
||
// settings.setDisplayZoomControls(false); // 隐藏缩放控件
|
||
|
||
|
||
webView.setWebChromeClient(new WebChromeClient() {
|
||
@Override
|
||
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
|
||
|
||
WebView newWebView = new WebView(WebView2Activity.this);
|
||
topVvvv.setVisibility(View.VISIBLE);
|
||
webView.addView(newWebView);
|
||
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
|
||
transport.setWebView(newWebView);
|
||
resultMsg.sendToTarget();
|
||
|
||
newWebView.setWebViewClient(new WebViewClient() {
|
||
@Override
|
||
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||
// isAtGame = true;
|
||
progressBar.setVisibility(View.GONE);
|
||
webView.loadUrl(url);
|
||
return true;
|
||
}
|
||
});
|
||
|
||
// WebView newWebView = new WebView(view.getContext());
|
||
// newWebView.setWebViewClient(new WebViewClient() {
|
||
// @Override
|
||
// public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||
// Intent browserIntent = new Intent(WebViewActivity.this, WebViewActivity.class);
|
||
// browserIntent.putExtra("url", url);
|
||
// startActivity(browserIntent);
|
||
// return true;
|
||
// }
|
||
// });
|
||
// WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
|
||
// transport.setWebView(newWebView);
|
||
// resultMsg.sendToTarget();
|
||
// return true;
|
||
return true;
|
||
}
|
||
|
||
|
||
@Override
|
||
public void onCloseWindow(WebView window) {
|
||
super.onCloseWindow(window);
|
||
}
|
||
|
||
@Override
|
||
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
|
||
LogUtils.d("consolemessage==" + consoleMessage.message());
|
||
return true;
|
||
}
|
||
|
||
|
||
@Override
|
||
public void onProgressChanged(WebView view, int newProgress) {
|
||
super.onProgressChanged(view, newProgress);
|
||
}
|
||
});
|
||
webView.setWebViewClient(new WebViewClient() {
|
||
|
||
|
||
@Override
|
||
public void onPageFinished(WebView view, String url) {
|
||
super.onPageFinished(view, url);
|
||
showTopLy.setVisibility(View.GONE);
|
||
progressBar.setVisibility(View.GONE);
|
||
topVvvv.setVisibility(View.VISIBLE);
|
||
}
|
||
|
||
@Override
|
||
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
||
super.onPageStarted(view, url, favicon);
|
||
progressBar.setVisibility(View.VISIBLE);
|
||
topVvvv.setVisibility(View.VISIBLE);
|
||
}
|
||
|
||
@Override
|
||
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
|
||
|
||
Uri uri;
|
||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||
uri = request.getUrl();
|
||
} else {
|
||
uri = Uri.parse(request.toString());
|
||
}
|
||
String url1 = uri.toString();
|
||
LogUtils.d("url1111111111==" + url1);
|
||
if (url1.equals(url + "index") || url1.equals(url + "/index")) {
|
||
topVvvv.setVisibility(View.GONE);
|
||
} else {
|
||
progressBar.setVisibility(View.VISIBLE);
|
||
}
|
||
|
||
if (!(url1.startsWith("http") || url1.startsWith("https"))) {
|
||
try {
|
||
Intent intent = new Intent();
|
||
intent.setAction(Intent.ACTION_VIEW);
|
||
intent.setData(Uri.parse(url1));
|
||
startActivity(intent);
|
||
return true;
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
} else {
|
||
|
||
if ((url1.equals(url + "index") || url1.equals(url + "/index")) && webView.canGoBack()) {
|
||
return false;
|
||
} else {
|
||
if (url1.contains(".apk")) { //下载
|
||
Toast.makeText(WebView2Activity.this, "下载开始,请稍后...", Toast.LENGTH_SHORT).show();
|
||
Constants.isUpdate = false;
|
||
new AppUpdater(WebView2Activity.this, url1).start();
|
||
return false;
|
||
}
|
||
//其它的该怎么处理就怎么处理
|
||
LogUtils.d("url1111111111==2" + url1);
|
||
webView.loadUrl(url1);
|
||
return true;
|
||
}
|
||
|
||
}
|
||
return false;
|
||
}
|
||
|
||
|
||
@Override
|
||
public boolean shouldOverrideUrlLoading(WebView view, String url1) {
|
||
if (url1.equals(url + "index") || url1.equals(url + "/index")) {
|
||
topVvvv.setVisibility(View.GONE);
|
||
} else {
|
||
progressBar.setVisibility(View.VISIBLE);
|
||
}
|
||
|
||
if (!(url1.startsWith("http") || url1.startsWith("https"))) {
|
||
try {
|
||
Intent intent = new Intent();
|
||
intent.setAction(Intent.ACTION_VIEW);
|
||
intent.setData(Uri.parse(url1));
|
||
startActivity(intent);
|
||
return true;
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
} else {
|
||
|
||
if ((url1.equals(url + "index") || url1.equals(url + "/index")) && webView.canGoBack()) {
|
||
return false;
|
||
} else {
|
||
if (url1.contains(".apk")) { //下载
|
||
new AppUpdater(WebView2Activity.this, url1).start();
|
||
return false;
|
||
}
|
||
//其它的该怎么处理就怎么处理
|
||
webView.loadUrl(url1);
|
||
return false;
|
||
}
|
||
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
|
||
});
|
||
|
||
|
||
// webView.setOnTouchListener(new View.OnTouchListener() {
|
||
// @Override
|
||
// public boolean onTouch(View view, MotionEvent motionEvent) {
|
||
// if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
|
||
// webView.loadUrl("javascript:_IntervalResize(+\" + view + \",false)");
|
||
// return true;
|
||
// } else {
|
||
// return false;
|
||
// }
|
||
// }
|
||
// });
|
||
|
||
// webView.onWindowFocusChanged(true);
|
||
// webView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
||
// @Override
|
||
// public void onFocusChange(View view, boolean b) {
|
||
// LogUtils.d("B==" + b);
|
||
// view.invalidate();
|
||
// }
|
||
// });
|
||
if (url != null) {
|
||
webView.loadUrl(url);
|
||
}
|
||
}
|
||
|
||
|
||
@Override
|
||
public void onBackPressed() {
|
||
if (webView.canGoBack()) {//当webview有多级能返回的时候
|
||
webView.goBack();
|
||
} else {//不能返回了
|
||
WebView2Activity.this.finish();
|
||
}
|
||
}
|
||
|
||
@Override
|
||
protected void onDestroy() {
|
||
if (webView != null) {
|
||
//加载null内容
|
||
// webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
|
||
//清除历史记录
|
||
// webView.clearHistory();
|
||
//移除WebView
|
||
// ((ViewGroup) webView.getParent()).removeView(webView);
|
||
//销毁VebView
|
||
webView.destroy();
|
||
}
|
||
super.onDestroy();
|
||
}
|
||
}
|