Android Question Permision Error in Android 11

khwarizmi

Active Member
Licensed User
Longtime User
Hi all
I want to save a text file in File.DirRootExternal, the code works fine in some versions of Android, but it does not work in Android 11 and above:
B4X:
Dim rp As RuntimePermissions
    rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
    Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
    If Result=False Then
        ToastMessageShow("permission denied",True)
    Else
        File.WriteString(File.DirRootExternal, "fn.txt", "Some Text")
    End If

this is the error message:

B4X:
mainfrm$ResumableSub_ImageView2_Clickresume (java line: 750)
java.io.FileNotFoundException: /storage/emulated/0/fn.txt: open failed: EPERM (Operation not permitted)
    at libcore.io.IoBridge.open(IoBridge.java:492)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:236)
    at anywheresoftware.b4a.objects.streams.File.OpenOutput(File.java:449)
    at anywheresoftware.b4a.objects.streams.File.WriteString(File.java:264)
    at com.khw.stt.mainfrm$ResumableSub_ImageView2_Click.resume(mainfrm.java:750)
    at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:267)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:207)
    at anywheresoftware.b4a.BA$2.run(BA.java:387)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:246)
    at android.app.ActivityThread.main(ActivityThread.java:8587)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Caused by: android.system.ErrnoException: open failed: EPERM (Operation not permitted)
    at libcore.io.Linux.open(Native Method)
    at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:254)
    at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
    at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8448)
    at libcore.io.IoBridge.open(IoBridge.java:478)
    ... 14 more
mainfrm$ResumableSub_ImageView2_Clickresume (java line: 750)
java.io.FileNotFoundException: /storage/emulated/0/fn.txt: open failed: EPERM (Operation not permitted)
    at libcore.io.IoBridge.open(IoBridge.java:492)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:236)
    at anywheresoftware.b4a.objects.streams.File.OpenOutput(File.java:449)
    at anywheresoftware.b4a.objects.streams.File.WriteString(File.java:264)
    at com.khw.stt.mainfrm$ResumableSub_ImageView2_Click.resume(mainfrm.java:750)
    at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:267)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:207)
    at anywheresoftware.b4a.BA$2.run(BA.java:387)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:246)
    at android.app.ActivityThread.main(ActivityThread.java:8587)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Caused by: android.system.ErrnoException: open failed: EPERM (Operation not permitted)
    at libcore.io.Linux.open(Native Method)
    at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:254)
    at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
    at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8448)
    at libcore.io.IoBridge.open(IoBridge.java:478)
    ... 14 more

I added to the Manifest Editor:
B4X:
AddManifestText(<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>)
    AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)
AddPermission(android.permission.READ_EXTERNAL_STORAGE)
 

DonManfred

Expert
Licensed User
Longtime User
Upvote 1

khwarizmi

Active Member
Licensed User
Longtime User
So, there is absolutely no permission to save in the main memory of the device?
 
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
Upvote 0
Top