У меня есть следующий класс:Вызывать метод в классе Singleton с помощью отражения в Java
Public class ABCinfo {
private static ABCinfo instance = null;
Public static ABCinfo getInstance(Param param); // get instance
Private ABCinfo(Param); // making a Singleton class
Public void methodA(Param1 param1); // need to invoke this method
}
с помощью отражения в Java, как я могу вызвать methodA()
. В основном я пишу приложение для Android, я хочу использовать метод в уже существующем (предположительно, он будет присутствовать все время) приложение, которое находится в телефоне.
Ниже перечислены вещи, которые я пробовал:
String apkName = activity.getPackageManager().getApplicationInfo(packageName, 0).sourceDir;
PathClassLoader myPathClassLoader =
new dalvik.system.PathClassLoader(
apkName,
ClassLoader.getSystemClassLoader());
Class<?> handler = Class.forName(className, true, myPathClassLoader);
Method m0 = handler.getDeclaredMethod("getInstance", new Class[] { Param.class });
m0.setAccessible(true);
Object b = m0.invoke(null, new Object[]{ Param});
Method m = handler.getMethod("methodA", new Class[] { Param1.class});
Param1 methodParameter = "asdf";
Object b1 = m.invoke(b, new Object[] { methodParameter });
Но его до сих пор не работает.
Вы не можете получить доступ к 'Class'es, которые являются частью другого Android приложения. Подумайте о том, чтобы сделать вышеупомянутый класс «службой» и общаться через «Intent's». – afk5min
Точно не приложение, а структура! Доступны методы. Спасибо – Vamsi