第一次提交

This commit is contained in:
xuhuixiang
2025-02-06 17:39:24 +08:00
parent 44d57f0c11
commit 1bebdc1954
1921 changed files with 68401 additions and 88 deletions

View File

@@ -0,0 +1,340 @@
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();
}
}