我的应用程序中有一个WebView,其中一些站点被打开(总是相同的,它是我自己的页面).该站点有一些JS代码,可以从远程主机加载一些图像.
我想截取对这些图像的请求(通过URL模式)并返回我自己的内容(即另一个图像),或者根据内部应用程序逻辑保持请求不变.
有可能吗?
编辑:目前的问题状态......
WebView有能力设置WebViewClient(如Axarydax所述).WebViewClient有两个有用的方法
shouldOverrideUrlLoadingonLoadResourceshouldOverrideUrlLoading能够拦截任何URL加载,如果加载是由页面交互触发的(即单击页面上的链接,WebView.loadURL("")不会触发此方法).它还可以通过返回false来取消URL加载.这种方法不可用,导致'它无法拦截页面资源的加载(和图像,我需要拦截的是这样的页面资源).
onLoadResource每次加载页面资源(和图像!thx到jessyjones)时都会触发,但是没有办法取消它.这使得这种方法也不适合我的任务.
我编写了一些Java代码,我想将其转换为JavaScript.我想知道是否可以使用GWT编译器将提到的Java代码编译成JavaScript代码,保留方法,变量和参数的所有名称.我尝试使用-draftCompile关闭代码优化来编译它,但是方法名称被破坏了.如果GWT编译器不能这样做,可以使用其他一些工具吗?
更新
Java代码只依赖于GWT模拟类,因此GWT编译器肯定能够处理它.
更新2
这个Java方法:
public String method()
Run Code Online (Sandbox Code Playgroud)
翻译成这个JavaScript函数:
function com_client_T_$method__Lcom_client_T_2Ljava_lang_String_2()
Run Code Online (Sandbox Code Playgroud)
使用编译器选项:
-style DETAILED
-optimize 0
-draftCompile
Run Code Online (Sandbox Code Playgroud)
所以名称不能保留.但有没有办法控制它们的变化?
澄清
比如说,您有一个用Java编写的排序算法(或其他一些简单的Maths实用程序).方法sort()采用整数数组.并在排序的数组中返回这些整数.现在说,我有Java和JavaScript应用程序.我想用Java编写这个方法一次,通过GWT编译器运行它,并保持方法名称相同,或者以可预测的方式更改它,这样我就可以检测它并知道如何将其更改回排序( ).然后我可以将该代码放在我的JavaScript应用程序中并使用它.如果Java版本发生变化,我也可以自动重新生成它.我在技术上有一个非常好的理由,我在高层次上理解GWT的概念,我只是在寻找这一点的答案.
结论
主要问题的答案是否定的.虽然方法名称可以在某种程度上保留,但它的主体不可用.其中的方法调用分散在整个生成的文件中,因此,它们不能在JavaScript库中使用,这是本主题的重点.
我最近一直在编写TypeScript,用于在浏览器中运行.我发现我想要做的是从Java应用程序中运行相同的代码.我有一个复杂的逻辑,我想编写一次,并在浏览器中的JavaScript环境中以及Java桌面环境中使用.现在我知道我可以在java中托管javascript,但我想知道是否有将TypeScript转换为纯Java代码的方法?
有没有工具将javascript转换为java,所以我可以使用GWT处理项目?
更新
对于那些不知道的人,GWT(Google Web Toolkit)是一个编写Java并获取Javascript的工具包,所以我的问题.