Android, как использовать DexClassLoader для динамичной замены Действия или Обслуживания

Я пытаюсь сделать что-то подобное этой регистрации stackoverflow. То, что я хочу сделать, должно прочитать определение действия или обслуживания от 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) {

Intead запуска com.android.my.path.to.a.loaded.activity указанный в /sdcard/mypath/My.apk, это запускает действие, статически загруженное в проект.

18
задан Community 23 May 2017 в 12:17
поделиться