ある種のプラグインシステムが必要なアプリを開発しています。
別の.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;
}
}