我有一个简单的Facebook直播HTML的WebView:
<html>
<head></head>
<body>
<iframe allowfullscreen="true" allowtransparency="true" frameborder="0" height="315" scrolling="no" src="https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2Fnico.up.9%2Fvideos%2F1895877650644648%2F&show_text=0&width=560" style="border:none;overflow:hidden" width="560"></iframe>
</body>
</html>
我必须覆盖我的WebView的shouldOverrideUrlLoading()方法,所以设置一个像这样的WebViewClient:
webview.setWebViewClient(new WebViewClient()
{
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url.contains("mydomain.com")) {
//I must do something in my app, without to load url
} else {
//else i want open native Android browser
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
browserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getActivity().startActivity(browserIntent);
}
return true;//never to load the url in my webview
}
});
问题是如果我有Facebook直播,我就崩溃了!
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=intent://video/?id={10155200044259063}&ref=m_embedded_video/ }
实际上,Facebook的iframe希望通过自定义uri意图在Facebook原生应用中打开直播://
我如何正确对待这个uri?!
在我的测试中:
webview.setWebViewClient(new WebViewClient());
我有ERR_UNKNOWN_URL_SCHEME,如果我删除了它的工作!!!?感谢您的帮助。
答案 0 :(得分:0)
回答你的一个问题
为什么我只添加这个简单的行:
webview.setWebViewClient(new WebViewClient());
我有ERR_UNKNOWN_URL_SCHEME,如果我删除它&#39; s 工作!!!?
请注意,如果您不致电setWebViewClient(new WebViewClient())
,则WebView的默认行为是启动处理网址的应用程序。否则,使用WebViewClient
类实例设置客户端将在WebView
对象中加载URL。
https://developer.android.com/guide/webapps/webview.html#HandlingNavigation
因此,如果您调用setWebViewClient(new WebViewClient())
,则实际上正在执行类似于在false
中返回shouldOverrideUrlLoading()
的代码。因此,为您提供相同的ERR_UNKNOWN_URL_SCHEME
错误。