я решил.
пример кода 1
public int ButtonClickCount() {
return 1;
}
.
findAndHookMethod(
"com.study.MainActivity",
lpparam.classLoader,
"ButtonClickCount",
new XC_MethodHook()
.
пример кода 2
public int ButtonClickCount(int a) {
return a++;
}
.
findAndHookMethod(
"com.study.MainActivity",
lpparam.classLoader,
"ButtonClickCount",
int.class,
new XC_MethodHook()
пример кода 3
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView((int) R.layout.activity_main);
this.btn = (Button) findViewById(R.id.btn);
this.up = (TextView) findViewById(R.id.up);
this.btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
.
findAndHookMethod(
"com.study.MainActivity",
lpparam.classLoader,
"ButtonClickCount",
Bundle.class,
new XC_MethodHook()
Как видно из приведенного выше примера кода, если вы подключаете метод, который не принимает значение аргумента, вы можете просто указать имя класса, загрузчик классов, имя метода, объект.
Однако, если вы получаете значение аргумента int a, называемое int a, от метода для перехвата, как в примере кода 2, вы должны добавить int.class в findAndHookMethod. Если вы не добавите его, вы увидите NoSuchMethodError в приложении Xposed.
Если вы попытаетесь подключить метод onCreate, как в примере кода 3, метод onCreate принимает аргумент типа Bundle. Итак, вам нужно добавить Bundle.class в findAndHookMethod.
Этот DO C помог мне с разрешением. https://api.xposed.info/reference/de/robv/android/xposed/XposedHelpers.html#findAndHookMethod (java .lang.String,% 20 java .lang.ClassLoader,% 20 java .lang.String,% 20 java .lang.Object ...)
Если это не сработает, проверьте версию Android Studio. В моем случае я перешел с версии 3.6.2 на версию 2.3.2, а затем запустил ее.
Надеюсь, мое решение кому-то поможет.