Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android WebView setWebViewClient()和Facebook Live Stream=ActivityNotFoundException_Android_Facebook_Android Intent_Webview - Fatal编程技术网

Android WebView setWebViewClient()和Facebook Live Stream=ActivityNotFoundException

Android WebView setWebViewClient()和Facebook Live Stream=ActivityNotFoundException,android,facebook,android-intent,webview,Android,Facebook,Android Intent,Webview,我有一个简单的Facebook Live Stream HTML网页视图: <html> <head></head> <body> <iframe allowfullscreen="true" allowtransparency="true" frameborder="0" height="315" scrolling="no" src="https://www.facebook.com/plugins/vid

我有一个简单的Facebook Live Stream HTML网页视图:

<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>
问题是如果我有一个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本机应用程序中的live://

我如何正确处理此uri

在我的测试中:

  • 如果我不添加我的自定义WebViewClient(永远不要调用setWebViewClient()),它就可以完美地工作
  • 如果我没有启动新的活动并返回false,我就不会崩溃,但我可以在iframe中查看Chrome错误加载:ERR\u UNKNOWN\u URL\u SCHEME

最有趣的是:
  • 为什么我只添加这一行:
    webview.setWebViewClient(newwebviewclient())我有一个错误未知的URL方案,如果我删除它,那就是工作
    

感谢您的帮助。

回答您的一个问题

为什么我只添加这么简单的一行:
webview.setWebViewClient(新)
WebViewClient())我有ERR\u UNKNOWN\u URL\u方案,如果我删除它
工作

请注意,如果不调用
setWebViewClient(new WebViewClient())
,WebView的默认行为是启动一个处理URL的应用程序。否则,使用
WebViewClient
类的实例设置客户端将在
WebView
对象中加载URL


因此,如果调用
setWebViewClient(new WebViewClient())
,则实际上执行的代码类似于在
shouldOverrideUrlLoading()
中返回
false
。因此,给您相同的
ERR\u UNKNOWN\u URL\u方案
error.

来回答您的一个问题

为什么我只添加这么简单的一行:
webview.setWebViewClient(新)
WebViewClient())我有ERR\u UNKNOWN\u URL\u方案,如果我删除它
工作

请注意,如果不调用
setWebViewClient(new WebViewClient())
,WebView的默认行为是启动一个处理URL的应用程序。否则,使用
WebViewClient
类的实例设置客户端将在
WebView
对象中加载URL


因此,如果调用
setWebViewClient(new WebViewClient())
,则实际上执行的代码类似于在
shouldOverrideUrlLoading()
中返回
false
。因此,给你相同的
ERR\u UNKNOWN\u URL\u方案
error.

如果你不调用setWebViewClient,它会加载到你手机的默认浏览器上吗?如果我不调用setWebViewClient,一切正常:在我手机的默认浏览器上加载新的URL(http://)和Fb Live Stream的URL(意图://)在fb应用程序中打开。这就是你想要的行为?(如果url是您自己的域,还需要做些什么?)是的,我想打开webview之外的所有url,我必须为单击的特定域执行特定操作。如果您不调用setWebViewClient,它是否加载到您手机的默认浏览器上?如果我不调用setWebViewClient,所有操作都正常:在我手机的默认浏览器上加载新url(http://),和在Fb应用程序中打开的Fb Live Stream的url(intent://)。这是您想要的行为吗?(如果url是您自己的域,还要做些什么?)是的,我想打开我的webview之外的所有url,并且我必须为单击的特定域做特定的事情。
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=intent://video/?id={10155200044259063}&ref=m_embedded_video/ }