Можно программно установить динамически загруженный apk из пользовательского приложения Android.

— — — — Ответ 1 — — — — —

Вы можете легко запустить маркет-ссылку или запрос на установку:

Intent promptInstall = new Intent(Intent.ACTION_VIEW)
    .setDataAndType(Uri.parse("file:///path/to/your.apk"), 
                    "application/vnd.android.package-archive");
startActivity(promptInstall);

"источник"

Intent goToMarket = new Intent(Intent.ACTION_VIEW)
    .setData(Uri.parse("market://details?id=com.package.name"));
startActivity(goToMarket);

"источник"

Однако вы не можете установить .apks без явного разрешения пользователя; нет, если устройство и ваша программа не имеют root-прав.

— — — — — Ответ 2 — — — — —

File file = new File(dir, "App.apk");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);

У меня была такая же проблема, и после нескольких попыток у меня получилось так. Я не знаю почему, но установка данных и типа по отдельности испортила мое намерение.