WebView和shouldOverrideUrlLoading

时间:2014-09-25 15:09:14

标签: android webview

我的代码:

    public class View_WebView extends Activity  {
    WebView myWebView;

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.endsWith(".mp4")){
            Intent in = new Intent (Intent.ACTION_VIEW , Uri.parse(url));
            startActivity(in);
            return true;
        }
        else
            return false;
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        myWebView = (WebView) findViewById(R.id.webview);
        myWebView.setWebViewClient(new WebViewClient());      
        myWebView.loadUrl("http://hdcast.pl");
    }     

}


    <?xml version="1.0" encoding="utf-8"?>
<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
 />

Eclipse编译正确,当我在智能手机上启动应用程序时出现错误:

“不幸的是,申请XX已被停止”

3 个答案:

答案 0 :(得分:1)

您的webView为空,取消注释此行:

myWebView = (WebView) findViewById(R.id.webview);

编辑:

您还必须在XML中有一个WebView元素

 <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
 />

答案 1 :(得分:1)

您没有正确使用它!

您必须制作自己的自定义WebClient,它将扩展WebClient,并在其中根据您的需要使用shouldOverrideUrlLoading。

http://developer.android.com/guide/webapps/webview.html

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.endsWith(".mp4")){
        Intent in = new Intent (Intent.ACTION_VIEW , Uri.parse(url));
        startActivity(in);
        return true;
    }
    else
        return false;
    }
}

然后将自定义WebClient添加到WebView中,您就可以了。

myWebView.setWebViewClient(new MyWebViewClient());      
myWebView.loadUrl("XXX");

编辑:根据上一个答案,请确保使用findViewById()

初始化WebView

答案 2 :(得分:1)

直接进行:

从此tutorial

myWebView.setWebViewClient(new WebViewClient() {  
@Override  
public boolean shouldOverrideUrlLoading(WebView view, String url) {  
 if (url.endsWith(".mp4")){
    Intent in = new Intent (Intent.ACTION_VIEW , Uri.parse(url));
    startActivity(in);
    return true;
}
else
    return false;
}