这很棘手。您基本上需要在运行时创建一个新类来覆盖shouldInterceptRequest:
public class SuperDuperUniqueNameForMyWebViewClient extends android.webkit.WebViewClient {
// constructor etc...
@Override
public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView view, android.webkit.WebResourceRequest request) {
// implement your logic here
}
}
Run Code Online (Sandbox Code Playgroud)
要动态创建类,您必须用 Java 即时编译代码:
String source = ...;
int result = com.sun.tools.javac.Main.compile(new String[]{source}); // parameter is an array
Run Code Online (Sandbox Code Playgroud)
Qt C++ 中给出了这样的结果:
QString source = ...; // Here you need to provide the Java code for your class
QAndroidJniObject sourceObject = QAndroidJniObject::fromString(source);
jobjectArray sourceObjectArray = sourceObject.object<jobjectArray>(); // this is probably not correct
jint result = QAndroidJniObject::callStaticMethod<jint>("com/sun/tools/javac/Main",
"compile"
"([Ljava/lang/String;)I",
jobjectArray);
Run Code Online (Sandbox Code Playgroud)
之后,您应该能够使用自己的类创建一个 Web 视图客户端并使用它:
QAndroidJniObject myWebViewClient{"SuperDuperUniqueNameForMyWebViewClient"};
Run Code Online (Sandbox Code Playgroud)
对这一切持保留态度,因为这是我的想法,我还没有测试过。不过,至少它应该将你推向正确的方向。
| 归档时间: |
|
| 查看次数: |
736 次 |
| 最近记录: |