我正在尝试在Android上使用Xposed来挂钩Android资源,特别是Webview的loadUrl。下面的代码挂钩到loadUrl,如果成功,则在日志上打印一条消息。
findAndHookMethod("com.example.webview.MainActivity", lpparam.classLoader, "android.webkit.WebView.loadUrl", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
XposedBridge.log("we are in loadurl!");
}
然而,这样做会引发错误:
java.lang.NoSuchMethodError: android.webkit.WebView#android.webkit.WebView.loadUrl()#exact
是否可以使用xposed挂接到Android资源?
答案 0 :(得分:1)
你可以简单地使用“hookAllMethods”
XposedBridge.hookAllMethods("com.example.webview.MainActivity", "loadUrl", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
XposedBridge.log("we are in loadurl!");
}
答案 1 :(得分:0)
由于未指定方法参数,因此找不到该方法。 Xposed助手函数试图找到一个没有参数的loadUrl方法,该方法不存在。
查看webView,有以下签名:
我没有测试但是这应该有用:
try {
Method loadUrl1 = android.webkit.WebView.class.getDeclaredMethod("loadUrl", String.class);
Method loadUrl2 = android.webkit.WebView.class.getDeclaredMethod("loadUrl", String.class, Map.class);
XposedBridge.hookMethod(loadUrl1, new XC_MethodHook() { /* your code here*/});
XposedBridge.hookMethod(loadUrl2, new XC_MethodHook() { /* your code here*/});
} catch (NoSuchMethodException e) { ... }
甚至使用您使用的相同API:
findAndHookMethod(classname, classloader, methodName, **ARGUMENTS[]**, xc_hook)
另外,你的意思是类名“android.webkit.WebView”和方法“loadUrl”吗?
祝你好运