webview播放优酷视频,网页无法加载,提示位于intent://....,无法加载因为net::ERR_UNKNOWN_URL_SCHEME

网上翻了很多都没找到正确答案,好多都说重写shouldOverrideUrlLoading这个方法,但是照做还是不能播放视频,于是我用其它浏览器打开优酷网址发现,浏览器会弹出是否启用外部应用程序,原来如此。由于优酷推荐自带客户端播放,这里需要判断是否启用第三方应用程序,所以就需要重写shouldOverrideUrlLoading,代码如下:

webView.setWebViewClient(new WebViewClient(){

    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        Log.d("shouldOverrideUrlLoading", url);
        // 处理自定义scheme
        if (!url.startsWith("http")) {
            Log.i("shouldOverrideUrlLoading", "处理自定义scheme");
            Toast.makeText(WebPageActivity.this, "需要下载客户端收看", Toast.LENGTH_LONG)
                    .show();
            try {
                // 以下固定写法
                final Intent intent = new Intent(Intent.ACTION_VIEW,
                        Uri.parse(url));
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                WebPageActivity.this.startActivity(intent);
            } catch (Exception e) {
                // 防止没有安装的情况
                e.printStackTrace();
            }
            return true;
        }
        return false;
    }
});

一定要写在

webView.setWebViewClient(new WebViewClient()下。

你可能感兴趣的:(安卓)