我正在尝试创建一个应用内页面,用于在WebView中加载YouTube频道。除了实际播放视频之外,我已经完成了所有工作。就好像在WebView内部,当我点击视频播放它时,消息就会丢失。我没有像我期望的那样看到对shouldOverrideUrlLoading()的调用。
代码是:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
webView = (WebView)findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new webViewClient());
webView.loadUrl(getIntent().getStringExtra("url"));
}
private class webViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals("about:blank")) {
return true;
}
view.loadUrl(url);
return true;
}
}
加载的URL类似于:http://www.youtube.com/tinhtevideo作为示例。我错过了什么吗?我会说,如果使用像“vnd.youtube:”这样的URL来调用shouldOverridingUrlLoading(),但我从来没有看到它。
当然,如果我在Android浏览器中加载上述网址,一切正常。
答案 0 :(得分:1)
我使用html文件,然后在其中添加标签。 这样的事情。
<iframe width="560" height="315"
src="http://www.youtube.com/embed/{{video}}?autoplay=1"
frameborder="0"
allowfullscreen>
</iframe>
然后将我的整个html加载到webview中。
private String myHtmlData = ""; //myHtmlData is my html file
myWebView.setBackgroundColor(Color.TRANSPARENT);
WebSettings settings = myWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setPluginsEnabled(true);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
myHtmlData, "text/html", "utf-8", null);
myWebView.loadData(myHtmlData, "text/html", "utf-8");
顺便说一句,我将我的html文件放在项目的资产类别中。
getAssets().open(fileName);
希望它可以解决您的问题。