2017-02-03 3 views
1

У меня есть несколько веб-просмотров в приложении, и один из них не загружается вообще, но при смене простого URL-адреса в этом конкретном веб-виде, например «https://www.google.com/», он загружается правильно. URL-адрес, который я пытаюсь загрузить, - «https://mpi.mashie.eu/public/menu/v%C3%A4ster%C3%A5s+stad+skola/a4ec46b2?country=se», который представляет собой меню обеда, в веб-просмотре внутри приложения, например, в коде и скриншоте.Конкретный веб-просмотр не загружается в макет в 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"); 
} 

приложений работает в прямом эфире на HTC One M9 Activity with webview running live application

Android-студия файл макета с WebView

Android Studio layout file with WebView visible

Я испытал ответ на подобный вопрос здесь: Android webview not loading url

ответ

1

Вы пытаетесь загрузить S SL (указанный https: //), и вы не обрабатываете событие ssl-error в своем веб-клиенте. Вам нужно перегрузить onReceivedSslError в webviewclient. Чтобы пройти сертификацию магазина Google Play, вам необходимо создать диалог, прежде чем приступать к ошибке сертификата SSL в вашем URL-адресе и разрешить пользователю принимать/отменять ssl-ошибку.

Этот пример кода из другого сообщения здесь, в StackOverflow, который был опубликован для аналогичного вопроса.

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

Разве Google не является защищенным SSL? – Erik

+0

Да, но у google есть действительный и надежный сертификат, в отличие от веб-сайта, который вы пытаетесь загрузить в своем проблемном сценарии. – Juginabi

Смежные вопросы