2013-04-25 96 views
23

我想URLWebView的Android的WebView不加載URL

我用下面的代碼加載:

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); 

但是,當我執行它,我不能夠加載的URL。我得到的網頁不可用。

任何人都可以幫忙嗎?

+0

是否加載在默認的Android瀏覽器的URL工作的? – 2013-04-25 05:38:52

+1

你有互聯網許可嗎? – Lucifer 2013-04-25 05:39:28

+0

@LeonLucardie在設備瀏覽器中工作 – String 2013-04-25 05:45:40

回答

67

你有沒有加入清單檔案中的Internet權限?如果不添加下面的行。

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

希望這能幫到你。

編輯

使用下面的線。

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

我已經添加了互聯網權限 – String 2013-04-25 05:47:03

+0

請參閱我編輯的答案。那是我用過的代碼 – itsrajesh4uguys 2013-04-25 05:51:46

+1

你救了我的命。謝謝。漂亮而乾淨的代碼。我也學會了簡單的進度條。 – CodeShadow 2015-08-26 06:05:51

15

添加權限清單中的Internet權限。

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

此代碼它的工作

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

*旁註:*您沒有使用'webSettings'變量 – Raptor 2013-08-08 07:54:17

+0

爲什麼'setLoadWithOverviewMode'重要? – 2016-01-19 01:56:34

3

使用下面的東西放在你的WebView

webview.setWebChromeClient(new WebChromeClient()); 

然後實施WebChromeClient類所需的方法。

+0

需要什麼方法? – confile 2015-09-13 13:38:28

+0

'WebChromeClient()'不需要任何方法' – 2016-01-19 02:00:14

+0

如果有人也面臨同樣的問題,爲了使webview加載web內容,有必要使用'WebViewClient'實例調用其方法'setWebViewClient'。沒有必要重寫任何方法。 – 2016-01-29 18:13:00

0

首先,檢查是否有清單文件Internet權限。

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

可以再加入繼的onCreate(代碼)或初始化()方法 -

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); 

,寫一個類來處理的WebView的回調 - 在同一類

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

,你也可以使用其他重要的回調如 -

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

此外,您可以添加「SwipeRefreshLayout」以啓用刷新刷新並刷新網頁視圖。

<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> 

,並刷新網頁視圖當用戶掃描屏幕:

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

只是作爲一個替代的解決方案:

對我來說webView.getSettings().setUserAgentString("Android WebView")的伎倆。

我已經實現INTERNET權限和WebViewClient以及WebChromeClient

5

也許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); 
     } 
    }