2013-04-25 48 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); 
     } 
    }