Android Question Storage Permission Denied

khwarizmi

Active Member
Licensed User
Longtime User
Sorry for duplicating topic, but the problem still exists.
I want to create a text file in the DirRootExternal:
B4X:
Dim mytext As String
    mytext=" Erel Rulezz Erel Rulezzzzz Erel Rulezzzzzzz ...... "
    File.WriteString(File.DirRootExternal,"sample.txt",mytext)
I added a permission to storage in the manifest editor, and make targetSdkVersion="23" :
B4X:
'This code will be applied to the manifest file during compilation.
'You do not need to modify it in most cases.
'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136
AddManifestText(
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23"/>
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
CreateResourceFromFile(Macro, Themes.LightTheme)
'End of default text.
AddManifestText(
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true" />)
AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)
but I get this error:
B4X:
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
main_activity_create (java line: 393)
java.io.FileNotFoundException: /storage/emulated/0/sample.txt: open failed: EACCES (Permission denied)
    at libcore.io.IoBridge.open(IoBridge.java:452)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
    at anywheresoftware.b4a.objects.streams.File.OpenOutput(File.java:449)
    at anywheresoftware.b4a.objects.streams.File.WriteString(File.java:264)
    at b4a.example.main._activity_create(main.java:393)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
    at b4a.example.main.afterFirstLayout(main.java:105)
    at b4a.example.main.access$000(main.java:17)
    at b4a.example.main$WaitForLayout.run(main.java:83)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:7406)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
    at libcore.io.Posix.open(Native Method)
    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
    at libcore.io.IoBridge.open(IoBridge.java:438)
    ... 16 more
 

so27

Active Member
Licensed User
Longtime User
I still use the permission query for this:

B4X:
rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)

From SDK 30 that will unfortunately no longer work.
 
Upvote 0

so27

Active Member
Licensed User
Longtime User
Why do you use in the manifest 2x:

B4X:
AddManifestText(...

Under 'End of default text will do AddPermission.
 
Upvote 0
Top