Emad Aljumaily
Emad Aljumaily

Reputation: 1

java.lang.RuntimeException: could not build OutputStream from this filerecorded_audio.wav

i have project record voice and want save the voice record in external storage phone, i tried it with android version 8,9 it is working but when try it with android version 10 its not working and display this error.From the error that appears, it becomes clear that there was no permission to record audio and access media files. But I put the passcode in the correct place, and upon entering the program for the first time, a list of permissions will appear.

i hope fine solution.

thanks for all

E/InputEventReceiver: Exception dispatching input event.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.RuntimeException: could not build OutputStream from this filerecorded_audio.wav
        at omrecorder.AbstractRecorder.outputStream(AbstractRecorder.java:44)
        at omrecorder.AbstractRecorder.<init>(AbstractRecorder.java:22)
        at omrecorder.Wav.<init>(Wav.java:35)
        at omrecorder.OmRecorder.wav(OmRecorder.java:36)
        at com.example.myapp.AudioRecorderActivity.resumeRecording(AudioRecorderActivity.java:303)
        at com.example.myapp.AudioRecorderActivity.access$000(AudioRecorderActivity.java:38)
        at com.example.myapp.AudioRecorderActivity$1.onTouch(AudioRecorderActivity.java:146)
        at android.view.View.dispatchTouchEvent(View.java:13450)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:488)
        at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1851)
        at android.app.Activity.dispatchTouchEvent(Activity.java:4059)
        at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
        at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:446)
        at android.view.View.dispatchPointerEvent(View.java:13715)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5602)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5402)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4903)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4956)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4922)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5062)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4930)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5119)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4903)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4956)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4922)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4930)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4903)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7677)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7646)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7607)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7807)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:251)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.app.ActivityThread.main(ActivityThread.java:7520)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
     Caused by: java.io.FileNotFoundException: /storage/emulated/0/recorded_audio.wav: open failed
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapp, PID: 26267
    java.lang.RuntimeException: could not build OutputStream from this filerecorded_audio.wav
        at omrecorder.AbstractRecorder.outputStream(AbstractRecorder.java:44)
        at omrecorder.AbstractRecorder.<init>(AbstractRecorder.java:22)
        at omrecorder.Wav.<init>(Wav.java:35)
        at omrecorder.OmRecorder.wav(OmRecorder.java:36)
        at com.example.myapp.AudioRecorderActivity.resumeRecording(AudioRecorderActivity.java:303)
        at com.example.myapp.AudioRecorderActivity.access$000(AudioRecorderActivity.java:38)
        at com.example.myapp.AudioRecorderActivity$1.onTouch(AudioRecorderActivity.java:146)
        at android.view.View.dispatchTouchEvent(View.java:13450)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3082)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2718)
        at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:488)
        at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1851)
        at android.app.Activity.dispatchTouchEvent(Activity.java:4059)
        at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
        at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:446)
        at android.view.View.dispatchPointerEvent(View.java:13715)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5602)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5402)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4903)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4956)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4922)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5062)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4930)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5119)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4903)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4956)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4922)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4930)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4903)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7677)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7646)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7607)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7807)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:251)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.app.ActivityThread.main(ActivityThread.java:7520)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
    Caused by: java.io.FileNotFoundException: /storage/emulated/0/recorded_audio.wav: open failed: EACCES (Permission denied)
        at libcore.io.IoBridge.open(IoBridge.java:496)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:235)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:186)
        at omrecorder.AbstractRecorder.outputStream(AbstractRecorder.java:41)
            ... 52 more
     Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
        at libcore.io.Linux.open(Native Method)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
        at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
        at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7419)
        at libcore.io.IoBridge.open(IoBridge.java:482)
            ... 55 more

Upvotes: 1

Views: 595

Answers (1)

Elyas Nategh
Elyas Nategh

Reputation: 550

i had same issue, Adding android:requestLegacyExternalStorage="true" to the Android Manifest worked for me (Android 10 (Q) at SDK 29+)

Upvotes: 1

Related Questions