我正在開發一個需要有某種插件系統的應用程序。Android,插件系統和反射類
是否有可能在單獨的.apk文件中加載反射類?
歡迎任何其他想法。
編輯:解決,謝謝大家。最後我想出了這個:
public Object loadPlugin(String packageName, String className) {
try {
return (Object) new PathClassLoader(getPackageManager().getPackageInfo(packageName, 0).applicationInfo.sourceDir, null, getClassLoader()).loadClass(className).getConstructor(new Class[]{ Context.class, IXoneApp.class }).newInstance(new Object[] {this, this.appData()});
} catch (NameNotFoundException ex) {
Utils.DebugLog(Utils.TAG_FRAMEWORK, "El módulo " + packageName + " no está instalado");
return null;
} catch (Exception ex) {
Utils.DebugLog(Utils.TAG_FRAMEWORK, "Fallo al invocar el módulo " + packageName + "\n" + ex.getMessage());
return null;
}
}
不知道它是如何工作的,或者即使http://developer.android.com/reference/dalvik/system/DexClassLoader.html聽起來像它可以做那樣的事情 – zapl
這聽起來不錯,它的工作原理。它可能是這樣的:'DexClassLoader cl = new DexClassLoader(「/ mnt/sdcard/whatever.apk」,「/ path/temp」,null,getClassLoader());'但是如果我想讓用戶安裝apk?這需要apk安裝在該路徑上。 – user1831114