2013-04-25 18 views
23

Chcę załadować URL w WebViewAndroid WebView nie ładuje URL

Użyłem następujący kod:

webView = (WebView) findViewById(R.id.webview1); 
webView.setWebViewClient(new HostsWebClient()); 
webView.getSettings().setPluginState(PluginState.ON); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false); 
webView.getSettings().setPluginsEnabled(true); 
webView.getSettings().setSupportMultipleWindows(false); 
webView.getSettings().setSupportZoom(false); 
webView.setVerticalScrollBarEnabled(false); 
webView.setHorizontalScrollBarEnabled(false); 

webView.loadUrl(URL); 

Ale kiedy go wykonać, nie jestem w stanie załadować URL. Dostaję stronę internetową niedostępną.

Czy ktoś może pomóc?

+0

Czy ładowanie pracę URL w domyślnej przeglądarki Androida? –

+1

Czy masz pozwolenie internetowe? – Lucifer

+0

@LeonLucardie działa w przeglądarce urządzenia – String

Odpowiedz

67

Czy w pliku manifestu dodano uprawnienie internetowe? jeśli nie, dodaj następujący wiersz.

<uses-permission android:name="android.permission.INTERNET"/> 

mam nadzieję, że to ci pomoże.

EDIT

Użyj poniższego linie.

public class WebViewDemo extends Activity { 


    private WebView webView; 


    Activity activity ; 
    private ProgressDialog progDailog; 

    @SuppressLint("NewApi") 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     activity = this; 

     progDailog = ProgressDialog.show(activity, "Loading","Please wait...", true); 
     progDailog.setCancelable(false); 



     webView = (WebView) findViewById(R.id.webview_compontent); 



     webView.getSettings().setJavaScriptEnabled(true);  
     webView.getSettings().setLoadWithOverviewMode(true); 
     webView.getSettings().setUseWideViewPort(true);   
     webView.setWebViewClient(new WebViewClient(){ 

      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       progDailog.show(); 
       view.loadUrl(url); 

       return true;     
      } 
      @Override 
      public void onPageFinished(WebView view, final String url) { 
       progDailog.dismiss(); 
      } 
     }); 

     webView.loadUrl("http://www.teluguoneradio.com/rssHostDescr.php?hostId=147"); 

     } 
+0

Dodałem już uprawnienia internetowe – String

+0

zobacz moją zredagowaną odpowiedź. to jest kod, którego użyłem – itsrajesh4uguys

+1

Uratowałeś mi życie. Dziękuję Ci. Ładny i czysty kod. Dowiedziałem się również, jak łatwo jest zrobić prosty pasek postępu. – CodeShadow

15

Dodaj pozwolenie Uprawnienia do Internetu w manifeście.

jak <uses-permission android:name="android.permission.INTERNET"/>

Ten kod nie działa

public class WebActivity extends Activity { 
    WebView wv; 

String url="http://www.teluguoneradio.com/rssHostDescr.php?hostId=147"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_web); 
    wv=(WebView)findViewById(R.id.webUrl_WEB); 



WebSettings webSettings = wv.getSettings(); 
    wv.getSettings().setLoadWithOverviewMode(true); 
    wv.getSettings().setUseWideViewPort(true); 
    wv.getSettings().setBuiltInZoomControls(true); 
    wv.getSettings().setPluginState(PluginState.ON); 


    wv.setWebViewClient(new myWebClient()); 

    wv.loadUrl(url); 
} 




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; 

    } 
} 
+4

* sidenote: * nie użyłeś zmiennej 'webSettings' – Raptor

+0

Dlaczego" setLoadWithOverviewMode "jest ważne? –

3

Użyj następujących czynności na WebView

webview.setWebChromeClient(new WebChromeClient()); 

następnie wdrożenie wymaganych metod klasy WebChromeClient.

+0

Jakie są wymagane metody? – confile

+0

Żadne metody nie są wymagane w 'WebChromeClient()' –

+0

Jeśli ktoś również napotyka ten sam problem, aby przeglądarka internetowa ładowała zawartość internetową, konieczne jest wywołanie jej metody 'setWebViewClient' za pomocą instancji' WebViewClient'. Nie ma potrzeby zastępowania żadnych metod. –

0

Najpierw sprawdź, czy masz dostęp do Internetu w pliku manifestu.

<uses-permission android:name="android.permission.INTERNET" /> 

Można następnie dodać następujący kod w onCreate() lub zainicjować() method-

final WebView webview = (WebView) rootView.findViewById(R.id.webview); 
     webview.setWebViewClient(new MyWebViewClient()); 
     webview.getSettings().setBuiltInZoomControls(false); 
     webview.getSettings().setSupportZoom(false); 
     webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
     webview.getSettings().setAllowFileAccess(true); 
     webview.getSettings().setDomStorageEnabled(true); 
     webview.loadUrl(URL); 

i napisać klasę do obsługi wywołań zwrotnych z WebView -

public class MyWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
          //your handling... 
       return super.shouldOverrideUrlLoading(view, url); 
     } 
    } 

w tej samej klasie można również użyć innych ważnych wywołań zwrotnych, takich jak -

- onPageStarted() 
- onPageFinished() 
- onReceivedSslError() 

Możesz także dodać "SwipeRefreshLayout", aby włączyć odświeżanie i odświeżanie widoku internetowego.

<android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipeRefreshLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <WebView 
      android:id="@+id/webview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </android.support.v4.widget.SwipeRefreshLayout> 

i odśwież webview gdy użytkownik ekran swipes:

SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout); 
      mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
       @Override 
       public void onRefresh() { 
        new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          mSwipeRefreshLayout.setRefreshing(false); 
          webview.reload(); 
         } 
        }, 3000); 
       } 
      }); 
0

Tylko jako alternatywnego rozwiązania:

Dla mnie webView.getSettings().setUserAgentString("Android WebView") załatwiło sprawę.

miałem już wdrożone pozwolenie Internet i WebViewClient jak również WebChromeClient

5

może SSL

@Override 
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
     // ignore ssl error 
     if (handler != null){ 
      handler.proceed(); 
     } else { 
      super.onReceivedSslError(view, null, error); 
     } 
    } 
Powiązane problemy