Я думаю, что проблема связана с тем, как вы управляете членом var outputFileUri в течение стандартного жизненного цикла активности Android.
Когда вы вызываете StartActivityForResult, ваша деятельность останавливается и, вероятно, уничтожается. Когда намерение захвата возвращается, ваша деятельность воссоздается и возобновляется. Возможно, вам необходимо сохранить значение outputFileUri в этих событиях жизненного цикла.
См. onCreate и onSaveInstanceState .
Единственное объяснение, которое у меня есть, относительно того, почему нативное приложение делает это, в то время как какое-либо стороннее приложение камеры не будет каким-то образом нативным, потребляющим ресурсы в той степени, в которой ваша деятельность действительно будет уничтожена, уничтожив ваш outputFileUri.
Может также стоить взглянуть на код результата, возвращенный в onActivityResult, чтобы убедиться, что намерение камеры говорит «ОК», в дополнение к проверке uri / filepath, чтобы увидеть, что изображение действительно было получено. Могу поспорить, что сделал.