Chiusura di una videata in Android

In sostanza, voglio caricare una pagina web, aspetto l'utente per accedere e quindi chiudere automaticamente la pagina web e continuare con l'applicazione. Quando l'utente è connesso alla pagina, il codice analizza la pagina web utilizzando una function Javascript per "A", "I" o "N", che consente all'utente diversi livelli di accesso alle altre funzioni della pagina web .

Il problema è che non riesco a chiudere il WebView subito dopo l'accesso. Attualmente, ho implementato un button closeWebview che l'utente può fare clic dopo aver closeWebview l'accesso che chiuderà la pagina, ma quando provo per chiuderlo automaticamente dopo l'authentication non posso farlo sembrare funzionare. Si chiude immediatamente o non posso chiuderlo affatto.

Ecco il mio codice per l'authentication:

  private void Authentication(){ class MyJavaScriptInterface { @JavascriptInterface public void showHTML(String content) { // grants access based on authorization level if (content.contains("A")) { addAuthentication = true; inquireAuthentication = true; loggedIn = true; Toast.makeText(getApplicationContext(), "Logged In for Addition and Inquiry", Toast.LENGTH_SHORT).show(); }else if(content.contains("I")){ addAuthentication = false; inquireAuthentication = true; loggedIn = true; Toast.makeText(getApplicationContext(), "Logged In for Inquiry only", Toast.LENGTH_SHORT).show(); }else { addAuthentication = false; inquireAuthentication = false; loggedIn = true; Toast.makeText(getApplicationContext(), "No Access Granted", Toast.LENGTH_SHORT).show(); } } } // open up the login page final WebView wv = (WebView)findViewById(R.id.login_webview); wv.getSettings().setJavaScriptEnabled(true); wv.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); wv.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { //once page is finished loading, check id="role" and copy that value and pass it to showHTML wv.loadUrl("javascript:(function() { " + "window.HTMLOUT.showHTML(document.getElementById('role').innerHTML);" + "})()"); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Log.w("LoginActivity: ", description); } }); wv.loadUrl(getString(R.string.loginURL)); if(!loggedIn) { wv.setVisibility(View.VISIBLE); closeWebview.setVisibility(View.VISIBLE); }else{ closeWebview.setVisibility(View.GONE); wv.setVisibility(View.GONE); } } 

E, solo per riferimento, qui è il codice del mio button closeWebview (contenuto nel metodo onClick(View v) :

  case R.id.close_webview: // closes the login webpage WebView wv = (WebView) findViewById(R.id.login_webview); wv.setVisibility(View.GONE); closeWebview.setVisibility(View.GONE); break; 

Perché non avviare una nuova attività una volta autenticata o gonfiare un frammento? Quello che vorrei raccomandare è controllare la string url per una specifica url string di successo, cioè Amazon una volta firmata:

https://www.amazon.co.uk/gp/yourstore/home?ie=UTF8&ref_=gno_signin&

non puoi passare a questo URL a less che tu non sia connesso. Scopri cosa contiene l'URL una volta che hai eseguito l'accesso e fa qualcosa.

 public void onPageFinished(WebView view, String url) { if (url.contains("https://www.amazon.co.uk/gp/yourstore/home")) { // Successfully logged in, load your logged in activity startActivity(new Intent(this, **yournewclass**.class)); } } 

Spero che questo ti aiuti.