2017-03-08 12 views
1

Ich möchte eine statische Webseiten in einem Webview laden, damit ich es eine Website verwenden kann. aber die Anker-Links oder Redirects funktioniert nicht, wenn ich auf einen Link klicke, wird es nicht in der Webansicht geladen, aber es wird von einer anderen HTML-Viewer-App mit 404-Fehler geöffnet. Also möchte ich einfach jede URL in die Webansicht laden.laden statische Seiten in android webview

Aktivität:

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class MainActivity extends AppCompatActivity { 

    WebView wb; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     wb = (WebView) findViewById(R.id.webview); 
     wb.getSettings().setJavaScriptEnabled(true); 
     wb.loadUrl("file:///android_asset/index.html"); 
    } 
} 

index.html:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"/> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"/> 
     <meta name="viewport" content="width=device-width, initial-scale=1"/> 
     <link rel="stylesheet" type="text/css" href="file:///android_asset/style.css"/> 
     <title></title> 
    </head> 
    <body> 
     <div class="container"> 

       <div class="row"> 
        <label for="username">USERNAME</label> 
        <input type="text" id="username" class="text-input"/> 
       </div> 
       <div class="row"> 
        <label for="password">PASSWORD</label> 
        <input type="password" id="password" class="text-input"/> 
       </div> 
       <div class="row" id="error"></div> 
       <div class="row"> 
        <button id="login" class="submit">LOGIN</button> 
       </div> 
      <a href="file:///android_asset/nearby.html">Next Page</a> 
     </div> 

     <script type="text/javascript" src="jquery-2.1.1.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function(){ 
       var errors = 0; 
       $('#login').click(function(e){ 
        if(validate() === 0){ 
         if($('#username').val() === 'user' && $('#password').val() === 'pass'){ 
          window.location.href = 'file:///android_asset/nearby.html'; 
         } else{ 
          $('#error').html('username or password is incorrect !').show(); 
         } 
        } 
       }); 
       function validate(){ 
        checkInput($('#username')); 
        checkInput($('#password')); 
        console.log(errors); 
        return errors; 
       }; 
       function checkInput(element){ 
        if(element.val() === ''){ 
         element.css('border','2px solid #ff0000'); 
         errors++; 
        } else{ 
         element.css('border','none'); 
         if(errors > 0) 
          errors = errors - 1; 
        } 
       }; 
      }); 
     </script> 
    </body> 
</html> 

sollte beispielsweise die Seite nearby.html Seite umgeleitet werden, wenn der Benutzer die richtigen Werte von Benutzername und Passwort eingegeben, aber wie ich sagte vorher, die angeforderte Seite wird von einer anderen App mit einem 404 Fehler geöffnet.

Antwort

1

Sie müssen angeben, dass Sie selbst mit Klicks umgehen möchten, indem Sie den WebView-WebClient festlegen. Zitiert aus der WebView tutorial:

Links durch den Benutzer angeklickt zu öffnen, bieten einfach eine WebViewClient für Ihre WebView, setWebViewClient() verwenden. Zum Beispiel:

WebView myWebView = (WebView) findViewById(R.id.webview); 
    myWebView.setWebViewClient(new WebViewClient()); 

Das ist es. Nun werden alle Links, auf die der Nutzer klickt, in Ihr WebView geladen.