Я пытаюсь сделать что-то похожее на эту qaru.site/info/205029/.... Что я хочу сделать, так это прочитать определение активности или услуги с SD-карты. Чтобы избежать явных проблем с разрешениями, я создаю оболочную версию этого действия в .apk, но пытаюсь заменить его активностью с тем же именем, который находится на SD-карте во время выполнения. К сожалению, я могу загрузить определение класса активности с SD-карты с помощью DexClassLoader, но исходное определение класса - это тот, который выполняется. Есть ли способ указать, что новое определение класса заменяет старый, или какие-либо предложения по устранению проблем с разрешениями манифеста без фактического предоставления необходимой активности в пакете? Пример кода:
ClassLoader cl = new DexClassLoader("/sdcard/mypath/My.apk",
getFilesDir().getAbsolutePath(),
null,
MainActivity.class.getClassLoader());
try {
Class<?> c = cl.loadClass("com.android.my.path.to.a.loaded.activity");
Intent i = new Intent(getBaseContext(), c);
startActivity(i);
}
catch (Exception e) {
Интегрированный запуск com.android.my.path.to.a.loaded.activity
, указанный в /sdcard/mypath/My.apk
, запускает активность, статически загруженную в проект.