Free Download Manager v6.23.0.5754版本的 MD5 值为:01223946462417ce314ac322c50926ba
以下内容为反编译后的 WebViewActivity.java 源代码,内容仅作参考
package org.freedownloadmanager.fdm;
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebBackForwardList;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.PopupMenu;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.common.internal.ImagesContract;
import java.io.UnsupportedEncodingException;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.CookiePolicy;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
public class WebViewActivity extends AppCompatActivity implements AppEventsReceiver {
public static boolean firstOpening = true;
public static boolean m_isCreated = false;
public BookmarkTools bookmarkTools;
String current_page_url = "";
public boolean m_allowAutoPasteFromClipboard = true;
private EditText m_editText;
private Button m_menuBtn;
private ProgressBar m_progressBar;
private Button m_refreshBtn;
private Button m_stopBtn;
private WebView m_webView;
private void showHistory() {
}
@Override
public void onCreate(Bundle bundle) {
m_isCreated = true;
Window window = getWindow();
window.addFlags(Integer.MIN_VALUE);
window.clearFlags(67108864);
super.onCreate(bundle);
setContentView(R.layout.activity_web_view);
this.bookmarkTools = new BookmarkTools(getApplicationContext());
CookieHandler.setDefault(new CookieManager(new PersistentCookieStore(this), CookiePolicy.ACCEPT_ALL));
this.m_refreshBtn = (Button) findViewById(R.id.refreshBtn);
this.m_stopBtn = (Button) findViewById(R.id.stopBtn);
this.m_progressBar = (ProgressBar) findViewById(R.id.progressBar);
m_editTextInit();
m_menuBtnInit();
m_webViewInit();
AppEventsManager.registerReceiver(this, true);
if (getIntent() != null) {
processIntent(getIntent());
}
if (bundle == null) {
if (this.m_allowAutoPasteFromClipboard) {
this.m_editText.requestFocus();
} else {
this.m_webView.requestFocus();
}
}
if (MyJavaNatives.nativeFunctionsRegistered) {
return;
}
Tools.showMainActivity(this);
}
@Override
protected void onNewIntent(Intent intent) {
processIntent(intent);
}
protected void processIntent(Intent intent) {
if (intent != null && (intent.getFlags() & 1048576) == 0) {
String stringExtra = intent.getStringExtra("EXTRA_OPEN_URL");
if (stringExtra == null || stringExtra.isEmpty()) {
String action = intent.getAction();
String type = intent.getType();
if (action == null) {
return;
}
if ((action.equals("android.intent.action.SEND") || action.equals(getPackageName() + ".internal.browser.intent.action.SEND")) && type != null && "text/plain".equals(type)) {
stringExtra = intent.getStringExtra("android.intent.extra.TEXT");
}
}
if (isOkUrl(stringExtra)) {
this.m_allowAutoPasteFromClipboard = false;
this.m_webView.loadUrl(stringExtra);
}
}
}
@Override
protected void onDestroy() {
AppEventsManager.registerReceiver(this, false);
m_isCreated = false;
super.onDestroy();
}
@Override
protected void onStart() {
super.onStart();
MyJavaNatives.waOnActivityStopped(1, false);
}
@Override
protected void onStop() {
super.onStop();
MyJavaNatives.waOnActivityStopped(1, true);
}
@Override
public void onActivityResult(int i, int i2, Intent intent) {
super.onActivityResult(i, i2, intent);
if (i == 1 && i2 == -1) {
String stringExtra = intent.getStringExtra(ImagesContract.URL);
this.current_page_url = stringExtra;
this.m_editText.setText(stringExtra);
loadLink();
}
}
@Override
protected void onSaveInstanceState(Bundle bundle) {
Log.v("[DEBUG]", "onSaveInstanceState");
super.onSaveInstanceState(bundle);
this.m_webView.saveState(bundle);
}
@Override
protected void onRestoreInstanceState(Bundle bundle) {
Log.v("[DEBUG]", "onRestoreInstanceState");
super.onRestoreInstanceState(bundle);
this.m_webView.restoreState(bundle);
}
private void m_editTextInit() {
this.m_editText = (EditText) findViewById(R.id.editText);
setStrings();
this.m_editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
if (i == 2) {
WebViewActivity.this.loadLink();
((InputMethodManager) textView.getContext().getSystemService("input_method")).hideSoftInputFromWindow(textView.getWindowToken(), 0);
}
return false;
}
});
this.m_editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean z) {
}
});
}
private void m_menuBtnInit() {
Button button = (Button) findViewById(R.id.menuBtn);
this.m_menuBtn = button;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu popupMenu = new PopupMenu(WebViewActivity.this, view);
popupMenu.getMenuInflater().inflate(R.menu.main_menu, popupMenu.getMenu());
popupMenu.getMenu().findItem(R.id.backToFdm).setTitle(MyJavaNatives.waQtStringArg(MyJavaNatives.translate("Browser MainMenu", "Back to %1"), MyJavaNatives.waAppName(true)));
popupMenu.getMenu().findItem(R.id.bookmarks).setTitle(MyJavaNatives.translate("Browser MainMenu", "Bookmarks"));
popupMenu.getMenu().findItem(R.id.downloadMedia).setTitle(MyJavaNatives.translate("Browser MainMenu", "Download media"));
if (WebViewActivity.this.canAddBookmark()) {
if (WebViewActivity.this.isCurrentPageBookmarked()) {
popupMenu.getMenu().findItem(R.id.addBookmark).setTitle(MyJavaNatives.translate("Browser MainMenu", "Remove bookmark"));
} else {
popupMenu.getMenu().findItem(R.id.addBookmark).setTitle(MyJavaNatives.translate("Browser MainMenu", "Add bookmark"));
}
popupMenu.getMenu().findItem(R.id.addBookmark).setEnabled(true);
} else {
popupMenu.getMenu().findItem(R.id.addBookmark).setTitle(MyJavaNatives.translate("Browser MainMenu", "Add bookmark"));
popupMenu.getMenu().findItem(R.id.addBookmark).setEnabled(false);
}
popupMenu.getMenu().findItem(R.id.downloadMedia).setEnabled(MyJavaNatives.nativeFunctionsRegistered && MyJavaNatives.bibHasMedia(WebViewActivity.this.m_webView.getUrl()));
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.addBookmark:
WebViewActivity.this.addBookmarkClick();
return true;
case R.id.backToFdm:
Tools.showMainActivity(WebViewActivity.this);
return true;
case R.id.bookmarks:
WebViewActivity.this.startActivityForResult(new Intent(WebViewActivity.this, (Class<?>) BookmarkActivity.class), 1);
return true;
case R.id.downloadMedia:
MyJavaNatives.bibDownloadMedia(WebViewActivity.this.m_webView.getUrl());
Tools.showMainActivity(WebViewActivity.this);
return true;
default:
return false;
}
}
});
popupMenu.show();
}
});
}
private String getUrl4Bookmark() {
return this.m_webView.getUrl();
}
public boolean canAddBookmark() {
String url4Bookmark = getUrl4Bookmark();
return url4Bookmark != null && this.m_editText.getText().toString().equals(url4Bookmark.toString());
}
public boolean isCurrentPageBookmarked() {
return this.bookmarkTools.searchBookmark(getUrl4Bookmark()).intValue() >= 0;
}
public void addBookmarkClick() {
if (canAddBookmark()) {
String url4Bookmark = getUrl4Bookmark();
Integer searchBookmark = this.bookmarkTools.searchBookmark(url4Bookmark);
if (searchBookmark.intValue() >= 0) {
this.bookmarkTools.removeBookmark(searchBookmark);
} else {
this.bookmarkTools.addBookmark(url4Bookmark, this.m_webView.getTitle().trim());
}
}
}
public void printBackForwardList() {
WebBackForwardList copyBackForwardList = this.m_webView.copyBackForwardList();
int size = copyBackForwardList.getSize();
for (int i = 0; i < size; i++) {
Log.v("[DEBUG]", "The URL at index: " + Integer.toString(i) + " is " + copyBackForwardList.getItemAtIndex(i).getUrl());
}
}
private void m_webViewInit() {
WebView webView = (WebView) findViewById(R.id.webView);
this.m_webView = webView;
webView.getSettings().setJavaScriptEnabled(true);
NetworkRequestsKeeper networkRequestsKeeper = new NetworkRequestsKeeper();
this.m_webView.setWebViewClient(new MyWebViewClient(this, this.m_webView, networkRequestsKeeper));
this.m_webView.setDownloadListener(new BibDownloadListener(this, this.m_webView, networkRequestsKeeper));
this.m_webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView webView2, int i) {
WebViewActivity.this.m_progressBar.setProgress(i);
}
});
}
@Override
public void onWindowFocusChanged(boolean z) {
super.onWindowFocusChanged(z);
if (firstOpening && z && this.m_allowAutoPasteFromClipboard) {
firstOpening = false;
String urlFromClipboard = getUrlFromClipboard();
this.current_page_url = urlFromClipboard;
this.m_editText.setText(urlFromClipboard);
this.m_editText.selectAll();
}
}
private String getUrlFromClipboard() {
ClipDescription primaryClipDescription;
ClipData primaryClip;
ClipData.Item itemAt;
CharSequence text;
String obj;
ClipboardManager clipboardManager = (ClipboardManager) getSystemService("clipboard");
if (clipboardManager == null || !clipboardManager.hasPrimaryClip() || (primaryClipDescription = clipboardManager.getPrimaryClipDescription()) == null || !primaryClipDescription.hasMimeType("text/plain") || (primaryClip = clipboardManager.getPrimaryClip()) == null || (itemAt = primaryClip.getItemAt(0)) == null || (text = itemAt.getText()) == null || (obj = text.toString()) == null) {
return "";
}
String trim = obj.trim();
return isOkUrl(trim) ? trim : "";
}
public void loadLink() {
String obj = this.m_editText.getText().toString();
if (!isOkUrl(obj)) {
if (obj.indexOf(32) != -1 || obj.indexOf(46) == -1) {
obj = "https://www.google.com/search?q=" + encodeValue(obj);
} else {
obj = "https://" + obj;
}
}
this.m_webView.loadUrl(obj);
}
protected boolean isOkUrl(String str) {
return (str == null || str.isEmpty() || !str.matches("^(https?|ftp):\\/\\/.*$")) ? false : true;
}
private static String encodeValue(String str) {
try {
return URLEncoder.encode(str, StandardCharsets.UTF_8.name());
} catch (UnsupportedEncodingException unused) {
return str;
}
}
public void onRefreshClick(View view) {
loadLink();
}
public void onStopClick(View view) {
this.m_webView.stopLoading();
}
@Override
public boolean onKeyDown(int i, KeyEvent keyEvent) {
if (i == 4 && this.m_webView.canGoBack()) {
this.m_webView.goBack();
return true;
}
return super.onKeyDown(i, keyEvent);
}
@Override
public void onInterfaceLanguageChanged() {
runOnUiThread(new Runnable() {
@Override
public void run() {
WebViewActivity.this.onInterfaceLanguageChangedUi();
}
});
}
protected void onInterfaceLanguageChangedUi() {
setStrings();
}
private void setStrings() {
this.m_editText.setHint(MyJavaNatives.translate("Browser", "Enter URL"));
}
public class MyWebViewClient extends BibWebViewClient {
MyWebViewClient(Context context, WebView webView, NetworkRequestsKeeper networkRequestsKeeper) {
super(context, webView, networkRequestsKeeper);
}
@Override
public void onPageStarted(WebView webView, String str, Bitmap bitmap) {
super.onPageStarted(webView, str, bitmap);
WebViewActivity.this.current_page_url = str;
WebViewActivity.this.m_progressBar.setVisibility(0);
WebViewActivity.this.m_refreshBtn.setVisibility(8);
WebViewActivity.this.m_stopBtn.setVisibility(0);
}
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String str) {
String url = webView.getUrl();
String lowerCase = url.toLowerCase();
if (lowerCase.startsWith("http:") || lowerCase.startsWith("https:")) {
HashMap hashMap = new HashMap();
hashMap.put("Referer", url);
webView.loadUrl(str, hashMap);
return true;
}
webView.loadUrl(str);
return true;
}
@Override
public void onPageFinished(WebView webView, String str) {
super.onPageFinished(webView, str);
WebViewActivity.this.m_progressBar.setVisibility(8);
WebViewActivity.this.m_refreshBtn.setVisibility(0);
WebViewActivity.this.m_stopBtn.setVisibility(8);
}
@Override
public void doUpdateVisitedHistory(WebView webView, String str, boolean z) {
WebViewActivity.this.m_editText.setText(str.equals("about:blank") ? "" : str);
super.doUpdateVisitedHistory(webView, str, z);
}
}
}