我有一個下面的類:調用使用反射在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 });
但它仍然沒有工作。
您不能訪問'是另一個Android應用程序的一部分Class'es。考慮將上述類作爲「Service」並通過「Intent」進行通信。 – afk5min 2013-04-25 12:30:06
恰好不是應用程序,而是一個框架!這些方法是可訪問的。謝謝 – Vamsi 2013-04-25 12:55:18