为 ActivityTaskManager 使用 Java 反射 (Android)

问题描述 投票:0回答:1

我正在学习Java反射并尝试访问使用@hide隐藏的方法

getInstance
https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/core/ java/android/app/ActivityTaskManager.java)第 149 行。

但是,我不断收到 NoSuchMethodException。

        val taskManager = Class.forName("android.app.ActivityTaskManager")

        val myInstance = taskManager.getMethod("getInstance")
        myInstance.setAccessible(true)
        val retval = myInstance.invoke(null)

我感谢任何指导。

android reflection
1个回答
0
投票

通过反射调用方法的示例(需要传递对象实例和参数类型)

 public class MyClass {
     public String method1(String param1){
         return param1.toUpperCase();
     }
}

通过反射调用

try {

    MyClass objectInstance = MyClass.class.getConstructor().newInstance();

    Method  methodToInvoke = MyClass.class.getDeclaredMethod(
        "method1", // method name
        String.class // type first parameter
    );

    String returnMethod = (String) methodToInvoke.invoke(
            objectInstance, // class instance
            "valueParam1"   // first param value
        );

    System.out.println(returnMethod); // VALUEPARAM1;

} catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) {
    e.printStackTrace();
}

MyClass.class
Class.forName("MyClass")
相同 与
objectMyClass.getClass()

相同
© www.soinside.com 2019 - 2024. All rights reserved.