в приложении будет кнопка, и когда пользователь нажимает кнопку, запускается внутренний apk (игра с открытым исходным кодом).
Если вы имеете в виду, что приложение (внутренний apk) будет запущено, то вы не понимаете, как это работает. Итак, позвольте мне объяснить: APK не похож на .EXE в системе Windows. Я имею в виду, вы не можете просто "запустить" APK.
APK - это пакет, содержащий приложение, и единственное, что вы можете с ним сделать - это установить его. Код, который вы публикуете выше, похоже, вызывает установщик приложения для Android, который будет делать: установить приложение (не запускать его). Как видите, необходимо, чтобы приложение находилось во внешнем хранилище (SD-карта), и это потому, что установщик приложения не может напрямую получить доступ к вашему / res / raw.
Итак, вам нужно скопировать APK из res / raw на SDCard (Google - ваш друг), а затем использовать приведенный выше код. Опять же, это не будет запускать приложение, оно просто установит его. После его установки вы можете запустить его из своего приложения, выполнив что-то незначительное:
Intent intent = new Intent();
intent.setClassName("com.android.bla", "com.android.bla.YourActivity");
startActivity(intent);