Загрузка данных
package com.example.myapplication;
import android.app.DownloadManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.Intent.ShortcutIconResource;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.webkit.DownloadListener;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.activity.OnBackPressedCallback;
public class MainActivity extends AppCompatActivity {
private EditText urlInput;
private WebView webView;
private Spinner searchEngineSpinner;
private boolean isDarkWebsiteMode = false;
private final String[] searchEngines = {"Google", "Yandex", "DuckDuckGo", "Yahoo"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
urlInput = findViewById(R.id.url_input);
webView = findViewById(R.id.web_view);
searchEngineSpinner = findViewById(R.id.search_engine_spinner);
Button goButton = findViewById(R.id.go_button);
Button btnBack = findViewById(R.id.btn_back);
Button btnForward = findViewById(R.id.btn_forward);
Button btnTheme = findViewById(R.id.btn_theme);
Button btnBookmark = findViewById(R.id.btn_bookmark);
Button btnShortcut = findViewById(R.id.btn_shortcut);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, searchEngines);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
searchEngineSpinner.setAdapter(adapter);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
webView.getSettings().setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
});
webView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "browser_file_" + System.currentTimeMillis());
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
if (manager != null) {
manager.enqueue(request);
Toast.makeText(MainActivity.this, "Download started...", Toast.LENGTH_SHORT).show();
}
}
});
goButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String input = urlInput.getText().toString().trim();
if (!input.isEmpty()) {
loadWebPage(input);
}
}
});
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (webView.canGoBack()) webView.goBack();
}
});
btnForward.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (webView.canGoForward()) webView.goForward();
}
});
btnTheme.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isDarkWebsiteMode = !isDarkWebsiteMode;
if (isDarkWebsiteMode) {
webView.loadUrl("javascript:document.body.style.filter='invert(1) hue-rotate(180deg)';" +
"var media = document.querySelectorAll('img, video');" +
"media.forEach(element => element.style.filter = 'invert(1) hue-rotate(180deg)');");
Toast.makeText(MainActivity.this, "Dark Mode On", Toast.LENGTH_SHORT).show();
} else {
webView.loadUrl("javascript:document.body.style.filter='none';" +
"var media = document.querySelectorAll('img, video');" +
"media.forEach(element => element.style.filter = 'none');");
Toast.makeText(MainActivity.this, "Dark Mode Off", Toast.LENGTH_SHORT).show();
}
}
});
btnBookmark.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String currentUrl = webView.getUrl();
if (currentUrl != null) {
SharedPreferences prefs = getSharedPreferences("Bookmarks", MODE_PRIVATE);
prefs.edit().putString("last_bookmark", currentUrl).apply();
Toast.makeText(MainActivity.this, "Saved to Bookmarks!", Toast.LENGTH_SHORT).show();
}
}
});
btnShortcut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String currentUrl = webView.getUrl();
String currentTitle = webView.getTitle();
if (currentUrl != null) {
Intent shortcutIntent = new Intent(getApplicationContext(), MainActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, currentTitle != null ? currentTitle : "Web Site");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, ShortcutIconResource.fromContext(getApplicationContext(), R.mipmap.ic_launcher));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addIntent);
Toast.makeText(MainActivity.this, "Shortcut created on Home screen!", Toast.LENGTH_SHORT).show();
}
}
});
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (webView != null && webView.canGoBack()) {
webView.goBack();
} else {
finish();
}
}
});
}
private void loadWebPage(String input) {
if (input.contains(".") && !input.contains(" ")) {
if (!input.startsWith("http://") && !input.startsWith("https://")) {
input = "https://" + input;
}
webView.loadUrl(input);
} else {
String selectedEngine = searchEngineSpinner.getSelectedItem().toString();
String searchUrl = "";
if (selectedEngine.equals("Google")) {
searchUrl = "https://google.com" + input;
} else if (selectedEngine.equals("Yandex")) {
searchUrl = "https://yandex.ru" + input;
} else if (selectedEngine.equals("DuckDuckGo")) {
searchUrl = "https://duckduckgo.com" + input;
} else if (selectedEngine.equals("Yahoo")) {
searchUrl = "https://yahoo.com" + input;
}
webView.loadUrl(searchUrl);
}
}
}