как вызвать apk из моего приложения - PullRequest
0 голосов
/ 12 ноября 2010

Я пытаюсь добавить игру с открытым исходным кодом в свое приложение.Я имею в виду, я разработал приложение.Когда пользователь устанавливает мое приложение, в приложении будет кнопка, а когда пользователь нажимает кнопку, запускается внутренний apk (игра с открытым исходным кодом).

Но я не знаю, куда поместить файл apk игры?Я не знаю, как я могу вызвать игру apk?

Я нашел следующий код, который запускает любой apk с SDCard (я думаю).

String fileName = Environment.getExternalStorageDirectory() + "/myApp.apk";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
startActivity(intent);

Но я планирую подготовить один APK (и игра будет помещена куда-нибудь с таким res / raw).

1 Ответ

2 голосов
/ 12 ноября 2010

в приложении будет кнопка, и когда пользователь нажимает кнопку, запускается внутренний 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);
...