Вот фрагмент кода, который я использую, он выглядит в основном так же, как ваш, единственное отличие, которое я вижу, это использование packageURI. Я не знаю, если использование packageURI приведет к тому, что оно не будет работать, но на вашем месте я бы попробовал без него.
File appFile = new File(ScreenSaverActivity.this.getFilesDir() + File.separator + APPLICATION_FILE_NAME);
Intent installIntent = new Intent(Intent.ACTION_VIEW);
installIntent.setDataAndType(Uri.fromFile(appFile),"application/vnd.android.package-archive");
startActivity(installIntent);
Однако, как правило, когда вы видите сообщение «Приложение не установлено» при попытке установить его, это означает, что подпись, используемая для подписи 2 apk, была другой, то есть одна подписана ключом разблокировки, другая подписана ключом отладки. Или, может быть, если 2 apks были скомпилированы на разных компьютерах, вы подписали их с 2 разными ключами отладки.
Обратите внимание, что даже если вы не распространяете через рынок, вам все равно нужно создать и подписать ваше приложение. Срок действия ключа отладки истекает через 1 год, и ваше приложение перестанет работать после истечения срока действия ключа.