2017-08-07 178 views
0

现在我的webapp工作是这样的:用户点击按钮,然后应用程序将发布一个URL从互联网上获取视频。如何通过使用与crosswalk的shouldInterceptLoadRequest播放本地视频?

我的目的是:当SD卡上有用户想看的视频时,应用程序不会问互联网,而是播放本地视频。我发现方法“shouldInterceptLoadRequest”,我可以做一些事情,当我使用该方法来获取每个应用程序准备发送的网址。

但我的句柄后,我需要通过使用createXWalkWebResourceResponse(字符串mimeType,字符串编码,InputStream数据)返回一个XWalkWebResourceResponse。

但是来到这里的问题代码:

InputStream inputStream = new FileInputStream(filePath); 
return createXWalkWebResourceResponse("video/*","UTF-8",inputStream); 

此代码不起作用,并且球员仍然获得互联网视频,而不是本地视频。

我在想我在哪里错了?我相信读/写权限是全部设置和文件路径是真实的(我做一个mediaplayer演示播放mp4文件并成功)。

我尝试通过getData()读取输入流,并且成功,这意味着xwalkwebresourceresponse有数据,但为什么数据不起作用?

请有人知道我错在哪里可以告诉我哪个地方是错的。我有搜索文档,网站和任何地方我可以搜索,但仍然无法找到如何解决它。

回答

0

我是提问者。 我没有找到答案的关键,但我找到一些其他方法来解决这个问题。

当我需要使用'shouldInterceptLoadRequest'来取代webresource与本地资源。我还可以设置一个网络服务器,使本地资源成为网络资源。这意味着本地资源可以通过网络访问。所以我不需要使用'shouldInterceptLoadRequest'。

我使网络视频s path changed by js, and when the App load the js, i use 'shouldInterceptLoadRequest' to replace the web js with local js. local js can change the web video path. after that i set up a webserver to provide the localresource的路径,所以应用程序现在可以加载本地资源。

但是我仍然不知道为什么'shouldInterceptLoadRequest'无法取代网络视频。希望有人能回答我。

(哦,我成立了Web服务器与AndroidAsync,AndroidAsync可以通过github上被搜索)

英文不好。 希望能帮助你。