2017-02-03 3 views
1

Ich habe mehrere Webviews in einer Anwendung und eine von ihnen lädt überhaupt nicht, aber wenn Sie auf eine einfache URL in dieser spezifischen Webview wie "" ändern, lädt es richtig. Die URL, die ich laden möchte, ist "https://mpi.mashie.eu/public/menu/v%C3%A4ster%C3%A5s+stad+skola/a4ec46b2?country=se", das ist ein Mittagsmenü, in einem Webview innerhalb der Anwendung wie der Code und Screenshot enthalten zeigt.Spezifische Webansicht lädt nicht im Layout in Android

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_lunch); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 

    lunch_view = (WebView)findViewById(R.id.webLunch); 
    lunch_view.getSettings().setJavaScriptEnabled(true); 
    lunch_view.setWebViewClient(new WebViewClient()); 
    lunch_view.loadUrl("https://mpi.mashie.eu/public/menu/v%C3%A4ster%C3%A5s+stad+skola/a4ec46b2?country=se"); 
} 

Anwendung live auf HTC läuft One M9 Activity with webview running live application

Android Studio Layout-Datei mit Webview

Android Studio layout file with WebView visible

ich eine Antwort auf ähnliche Frage hier getestet haben: Android webview not loading url

Antwort

1

Sie versuchen, S zu laden SL-gesicherte Website (angezeigt durch https: //) und Sie behandeln kein ssl-error-Ereignis in Ihrem webviewclient. Sie müssen onReceivedSslError in webviewclient überladen. Um die Google Play Store-Zertifizierung zu bestehen, müssen Sie einen Dialog erstellen, bevor Sie mit einem SSL-Zertifikatfehler in Ihrer URL fortfahren und den Benutzer entscheiden lassen, ob der SSL-Fehler fortgesetzt/abgebrochen werden soll.

Dieser Beispielcode stammt von einem anderen Beitrag hier in StackOverflow, der für ähnliche Frage gepostet wurde.

private class MyWebViewClient extends WebViewClient { 
     @Override 
     public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getSupportActionBar().getThemedContext()); 
     AlertDialog alertDialog = builder.create(); 
     String message = "SSL Certificate error. "; 
     switch (error.getPrimaryError()) { 
      case SslError.SSL_UNTRUSTED: 
       message += "The certificate authority is not trusted."; 
       break; 
      case SslError.SSL_EXPIRED: 
       message += "The certificate has expired."; 
       break; 
      case SslError.SSL_IDMISMATCH: 
       message += "The certificate Hostname mismatch."; 
       break; 
      case SslError.SSL_NOTYETVALID: 
       message += "The certificate is not yet valid."; 
       break; 
     } 

     Log.d(TAG, message); 

     message += " Do you want to continue anyway?"; 
     alertDialog.setTitle("SSL Certificate Error"); 
     alertDialog.setMessage(message); 
     alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // Ignore SSL certificate errors 
       handler.proceed(); 
      } 
     }); 

     alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       handler.cancel(); 
      } 
     }); 
     alertDialog.show(); 
    } 
} 
+0

Ist Google auch SSL-gesichert? – Erik

+0

Ja, aber Google hat ein gültiges und vertrauenswürdiges Zertifikat, anders als die Website, die Sie in Ihrem problematischen Szenario zu laden versuchen. – Juginabi

Verwandte Themen