これはかなり複雑な質問です。リフレクション経由で webview の webviewcore インスタンス メンバーにアクセスしようとしています。webviewcore が使用するメソッドを呼び出すことができるように、webview で使用される webviewcore への参照が必要です。public 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 には、WebViewCore クラスのインスタンスである「mWebViewCore」というメンバー フィールドがあります。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?
}