2015-04-16 3 views
1

Когда я загружаю URL-адрес, он отображает окно для выбора браузера. Напр. - Если я хочу открыть «http://www.facebook.com/», тогда он покажет мне окно, чтобы выбрать Chrome или браузер по умолчанию. Я не могу понять, почему это происходит.Не удалось открыть URL-адрес в webview

Фактически в нижнем коде, если я успешно получил URL-адрес от сервера, тогда я скрываю извините изображение и показываю веб-просмотр. В противном случае я показываю webview и скрываю извините изображение.

webView = (WebView) findViewById(R.id.webView); 
      webView.setVisibility(View.VISIBLE); 
      ImageView img = (ImageView) findViewById(R.id.image); 
      img.setVisibility(View.GONE); 
      webView.setInitialScale(1); 
      webView.getSettings().setJavaScriptEnabled(true); 
      webView.getSettings().setLoadWithOverviewMode(true); 
      webView.getSettings().setUseWideViewPort(true); 
      webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
      webView.setScrollbarFadingEnabled(false); 
      webView.loadUrl("http://www.facebook.com/"); 

ответ

3

Попробуйте добавить эту строку

webView.setWebViewClient (новый WebViewClient());

+0

Спасибо, что работает. Но почему мы добавляем эту строку. На самом деле, я хочу знать, что произойдет, если мы добавим эту строку. – PKTomar

+1

это проблема с версией. Если вы запустите приложение выше 3.0, вам не нужно писать эту строку, но при запуске приложения в старой версии эта строка делает трюк, потому что если вы не укажете клиента веб-просмотра, браузер будет рассматриваться как веб-клиент по умолчанию в более старой версии. Если вы действительно как решение, которое вы можете повысить, также за понимание ответа. – Fakher

+0

задайте этот вопрос как ответ;) – Fakher

0

Во-первых, заменить http с https, а затем в порядке, чтобы сделать это, вы должны сначала создать новый класс Java, который расширяет WebViewClient класс и подменяет onPageFinished метод, как это:

public class CustomWebViewClient extends WebViewClient 
{  
    @Override 
    public void onPageFinished(WebView view, String url) { 

     //https://www.facebook.com/dialog/permissions.request 
     //actually works for me, but I put the URL you say is coming up  
     //blank in there instead, whatever works for you: 
     if(url.startsWith("https://www.facebook.com/dialog/oauth")){ 
      String redirectUrl = "http://www.yourdomain.com/MyApp/"; 
      view.loadUrl(redirectUrl); 
      return; 
     } 
     super.onPageFinished(view, url); 
    } 
} 

Во-вторых, просто добавьте его в WebView:

webview.setWebViewClient(new CustomWebViewClient()); 
1

Добавить WebViewClient как это

public class myWebClient extends WebViewClient 
{ 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     // TODO Auto-generated method stub 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     // TODO Auto-generated method stub 

     view.loadUrl(url); 
     return true; 

    } 
} 

Вы должны переопределить ваш shouldOverrideUrlLoading() метод.

В вашей деятельности UI добавьте эту строку

web.setWebViewClient(new myWebClient()); 

Это позволит решить вашу проблему. Надеюсь, поможет!

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