package com.example.webanton; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ProgressBar; import android.widget.TextView; import android.view.View.OnClickListener; import android.widget.Toast; import java.util.List; public class MainActivity extends AppCompatActivity { private WebView myWebView; private EditText webAddress; private ProgressBar progBar; private SQLiteDatabase DB; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myWebView = findViewById(R.id.activity_main_webView); webAddress = findViewById(R.id.et_address); ImageButton back = findViewById(R.id.btn_Back); ImageButton forward = findViewById(R.id.btn_Forward); ImageButton refresh = findViewById(R.id.btn_Refresh); final ImageButton addBookmark = findViewById(R.id.btn_addBookmark); Button showBookmarks = findViewById(R.id.btn_showBookmark); progBar = findViewById(R.id.progBar); //Creates the database and the table if it doesn't already exist. DB = openOrCreateDatabase("WebAnton_Bookmarks.db", MODE_PRIVATE, null); DB.execSQL("create table if not exists bookmark(url nvarchar);"); DB.close(); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); myWebView.loadUrl("https://www.tec.dk"); myWebView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { progBar.setProgress(progress); } }); myWebView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); //Checks if the current url exists in the bookmark table and changes the bookmark icon accordingly. SQLHandler handler = new SQLHandler(MainActivity.this); List result = handler.getData("select * from bookmark where url = '"+myWebView.getUrl()+"';"); if(result.size() == 0) addBookmark.setImageResource(android.R.drawable.btn_star_big_off); else addBookmark.setImageResource(android.R.drawable.btn_star_big_on); progBar.setVisibility(View.VISIBLE); } @Override public void onPageFinished(WebView view, String url) { progBar.setVisibility(View.INVISIBLE); } }); webAddress.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if(actionId == EditorInfo.IME_ACTION_GO) { String url = webAddress.getText().toString(); if(!url.isEmpty()) { if(!url.startsWith("http")) { if(!url.startsWith("www.")) url = "https://www." + url; else url = "https://" + url; } myWebView.loadUrl(url); } return true; } return false; } }); //Pressing back button calls the clickBack method. back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { clickBack(); } }); //Pressing forward button calls the clickForward method. forward.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { clickForward(); } }); //Pressing refresh button reloads the webview with the current url. refresh.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String currentUrl = myWebView.getUrl(); myWebView.loadUrl(currentUrl); } }); //Pressing add bookmark button first checks if the current url already exists in the database. //If not, the addBookmark method is called. If yes, the deleteBookmark method is called. //The bookmark icon also changes accordingly. addBookmark.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { SQLHandler handler = new SQLHandler(MainActivity.this); List result = handler.getData("select * from bookmark where url = '"+myWebView.getUrl()+"';"); if(result.size() == 0) { addBookmark(); addBookmark.setImageResource(android.R.drawable.btn_star_big_on); } else { deleteBookmark(); addBookmark.setImageResource(android.R.drawable.btn_star_big_off); } } }); //Pressing show bookmarks button starts the bookmark activity. showBookmarks.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent bookmark = new Intent(v.getContext(), Bookmarks.class); startActivity(bookmark); } }); } @Override public void onBackPressed() { if(myWebView.canGoBack()) myWebView.goBack(); else super.onBackPressed(); } private void clickBack() { if(myWebView.canGoBack()) myWebView.goBack(); } private void clickForward() { if(myWebView.canGoForward()) myWebView.goForward(); } //Makes an instance of the SQLHandler class and calls its insertData method. private void addBookmark() { SQLHandler handler = new SQLHandler(MainActivity.this); handler.insertData(myWebView.getUrl()); Toast.makeText(getApplicationContext(), "Bookmark added!", Toast.LENGTH_SHORT).show(); } //Makes an instance of the SQLHandler class and calls its deleteData method. private void deleteBookmark() { SQLHandler handler = new SQLHandler(MainActivity.this); handler.deleteData("url = '"+myWebView.getUrl()+"'"); Toast.makeText(getApplicationContext(), "Bookmark deleted!", Toast.LENGTH_SHORT).show(); } }