这似乎是一个奇怪的问题,但我很想知道它是否可行。我正在研究 POC,因此必须证明或反驳它是否有效。
Android 应用程序中的 UI 将是原生的(Java + XML 布局)+ 一些其他设备功能访问,例如(相机/文件系统等)。
我已经构建了一个 JS 库,其中包含一些执行 Ajax 发布和获取请求的函数。
在应用程序中,我有一个不可见的 Webview,我在其中加载了一个空白 HTML(引用这个 JS 库)。在那个 WebView 中,我注入了一个 JavascripInterface。所以,本质上,UI 是原生的,你永远不会看到 Webview。这只是一个主机,它提供对我的 JS 库对本机代码的访问。
现在,在我的 UI 上执行某些操作时,我调用 Webview 上的 JS 函数,它反过来尝试进行 ajax 调用(loadUrl 调用 ex.javascipt:functionName())。但是,这些调用失败,没有任何可见的错误。
注意:如果我将它加载到桌面浏览器上,同样的 HTML 文件也可以工作。AJAX 调用成功。
但是,当我通过 JavascriptInterface(或 webview.loadUrl() 调用)启动 Ajax 调用时,它们会失败,响应状态为 0。
除了 AJAX 之外的东西,比如简单的函数调用、警报和通过 javascript 接口进行的回调都可以正常工作。
问:我知道这是一种奇怪且不切实际的做事方式。但是,它/应该工作吗?
更新:即使在设置之后
setBlockNetworkLoads(假),还是不行。
我尝试记录 JS 调用和错误,并收到此错误。
Access-Control-Allow-Headers 不允许请求头字段 X-Requested-With。
知道如何解决这个问题吗?