这是一个相当复杂的问题。我正在尝试通过反射访问 webview 的 webviewcore 实例成员。我想要对我的 webview 使用的 webviewcore 的引用,以便我可以调用 webviewcore 使用的方法。我必须通过反射来做到这一点,因为公共 sdk 不允许您访问此类。我知道不鼓励使用反射来做到这一点,但我已经对此感到平静。
我在这里读到,为了实现这一点,我会做这样的事情:
Class aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
field.set(objetInstance, value);
这样做的问题(也许我误解了这一点)是看起来我必须创建一个 WebViewCore 的新实例才能使用,然后将其设置回我的实例。首先,我是否正确理解这一点。如果是这样,那么有人可以翻译上面的代码来做我想要做的事情。如果我的理解不正确,有谁知道我还能如何访问 webview 实例的 WebViewCore?
谢谢!
编辑:由于混淆,我将重申我的问题。我有一个 webview 的实例。该 webview 有一个名为“mWebViewCore”的成员字段,它是 WebViewCore 类的一个实例。WebViewCore 有一个名为 TextSelectionData 的成员类。我需要通过反射访问 TextSelectionData 对象。我知道如何通过反射访问 webview 的字段和方法。所以我可以获得 mWebViewCore 字段,但我不知道如何获取该字段并访问它的字段、方法、类等。大写是获取一个对象的实例,在该实例中找到一个特定字段,然后访问这些字段那个领域的。
对困惑感到抱歉。它来自我对反射的薄弱理解,部分来自我没有充分理解 WebViewCore 类的事实。这是我在代码中得到的地方:
Class c = mWebView.getClass();
try {
Field webViewCoreField = c.getDeclaredField("mWebViewCore");
webViewCoreField.setAccessible(true);
//how do i get the fields of webViewCoreField?
}