2017-09-29 10 views
0

私はAndroidでいくつかのシステムAPIをフックしたいが、それらのいくつかは静的メソッドです。だから私は反射や他の方法でJava静的メソッドをフックすることができますか?どのようにJavaの静的メソッドにフックするには?

+0

フックで男性は何ですか?おそらくリスナーに登録していますか? –

+0

私が意味するのは、ターゲットメソッドをラッパーメソッドで置き換えることです。パラメータを読み込んだり、返された結果を変更したりすることができます。 –

答えて

1

Javaはサルのパッチ適用をサポートしていません(たとえば、javascriptのように)。これを達成する唯一の方法は、自分のクラスローダーを操作し、クラスを返す前にクラスをインストルメントすることです。これは明らかにAndroidシステムAPIでは機能しません。

apiへの独自の呼び出しを代行して特定の場合に置き換える場合は、apiのファサード(静的ではないメソッド)を作成し、ファサードからアクセスします。その後、ファサード上のデコレータを使用して、その動作を即座に変更することができます。

関連する問題