Android Question open device file failed for R/W: 13 (Permission denied)

hookshy

Well-Known Member
Licensed User
Longtime User
I use runtime permistion and asked for the following :
rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
rp.CheckAndRequest(rp.PERMISSION_READ_EXTERNAL_STORAGE)
rp.CheckAndRequest(rp.PERMISSION_CAMERA)

Please help me understand the errors that I have bellow .
There is this Serviceinstance failed error that I do not understand .

I use httputils to conect to a data base like this:
B4X:
    Dim job As HttpJob
    job.Initialize(JobName,"Main")
    job.PostString("http://www.giadecor.ro/gabia.php", Query)

B4X:
Logger connected to:  VONINO Jax_S
--------- beginning of main
getServiceInstance failed!
tlcMemOpenInternal: open device file failed for R/W: 13 (Permission denied)
tlcMemOpenInternal: open device file for read only
[getaddrinfo]: hostname=www.giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=www.giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
getaddrinfo: www.giadecor.ro get result from proxy gai_error = 0
[getaddrinfo]: hostname=86.106.30.71; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=www.giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=86.106.30.71; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
getaddrinfo: giadecor.ro get result from proxy gai_error = 0
[getaddrinfo]: hostname=giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
getServiceInstance failed!
tlcMemOpenInternal: open device file failed for R/W: 13 (Permission denied)
tlcMemOpenInternal: open device file for read only
[getaddrinfo]: hostname=www.giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=www.giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
getaddrinfo: www.giadecor.ro get result from proxy gai_error = 0
[getaddrinfo]: hostname=86.106.30.71; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=www.giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=86.106.30.71; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
getaddrinfo: giadecor.ro get result from proxy gai_error = 0
[getaddrinfo]: hostname=giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
[getaddrinfo]: hostname=giadecor.ro; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
 

hookshy

Well-Known Member
Licensed User
Longtime User
I have started an experiment from tutorial runtime permisions and here is what i get in my logs
I do not receive any window to give permision

B4X:
Logger connected to:  VONINO Jax_S
--------- beginning of main
Sending signal. PID: 501 SIG: 9
getServiceInstance failed!
tlcMemOpenInternal: open device file failed for R/W: 13 (Permission denied)
tlcMemOpenInternal: open device file for read only

manifest editor
B4X:
AddManifestText(
<uses-sdk android:minSdkVersion="5" 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$")
SetApplicationAttribute(android:theme, "@android:style/Theme.Holo")
'End of default text.

AddPermission(android.permission.READ_EXTERNAL_STORAGE)
AddPermission(android.permission.INTERNET)

AddManifestText(
<uses-permission
  android:name="android.permission.WRITE_EXTERNAL_STORAGE"
  android:maxSdkVersion="18" />
)

appcode
B4X:
#Region Module Attributes
    #FullScreen: False
    #IncludeTitle: True
    #ApplicationLabel: myappex
    #VersionCode: 1
    #VersionName:
    #SupportedOrientations: portrait
    #BridgeLogger:true
    
#End Region

'Activity module
Sub Process_Globals
    
    Dim rp As RuntimePermissions
    Dim safedir As String
    
End Sub

Sub Globals

    Private Label1 As Label
    Private Label2 As Label
    Private Label3 As Label
    Private Label4 As Label
    Private EditText1 As EditText

End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layout1")
    
    safedir=rp.GetSafeDirDefaultExternal("")

    rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
    rp.CheckAndRequest(rp.PERMISSION_READ_EXTERNAL_STORAGE)
End Sub

Sub Activity_PermissionResult (Permission As String, Result As Boolean)

    If Permission = rp.PERMISSION_WRITE_EXTERNAL_STORAGE Then
        
        ToastMessageShow("Permition write external storage"& Result,True)
        Log(rp.PERMISSION_WRITE_EXTERNAL_STORAGE &" "&Result)
        
    End If
    
    If Permission = rp.PERMISSION_READ_EXTERNAL_STORAGE Then
    
        ToastMessageShow("Permition READ external storage"& Result,True)
        Log(rp.PERMISSION_READ_EXTERNAL_STORAGE &" "&Result)
        
    End If
    
End Sub


Sub Activity_Resume


End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub btn_4_Click

    'Msgbox(File.ReadString(File.DirDefaultExternal,"test1.txt"),"")
    'Msgbox(File.ReadString(File.DirRootExternal,"test2.txt"),"")

End Sub

Sub btn_3_Click



End Sub

Sub btn_2_Click
    
    File.WriteString(File.DirInternal,"test2.txt","2")
    File.WriteString(File.DirInternalCache,"test2.txt","2")

End Sub

Sub btn_1_Click

        File.WriteString(safedir,"test1.txt","1")
End Sub
 
Upvote 0

hookshy

Well-Known Member
Licensed User
Longtime User
B4X:
Please update to B4A-Bridge v2.30+
Logger connected to:  HUAWEI HUAWEI Y530-U00-864921021127255
--------- beginning of /dev/log/main
process main initialise var
starter process globals
** Service (starter) Create **
service create
** Service (starter) Start **
log globals initialise
** Activity (main) Create, isFirst = true **
activity create
imagefolder:/storage/sdcard0/Android/data/grmi.nucifere.com/files
** Activity (main) Resume **
** Service (firebasemessaging) Create **
** Service (firebasemessaging) Start **
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_EXTERNAL_STORAGE
android.permission.CAMERA
android.permission.READ_PHONE_STATE
** Service (httputils2service) Create **
** Service (httputils2service) Start **
<br />
<b>Warning</b>:  mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in <b>/home/gabia/public_html/gabia.php</b> on line <b>21</b><br />
[]<br />
<b>Warning</b>:  mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given in <b>/home/gabia/public_html/gabia.php</b> on line <b>26</b><br />
[{"id_s":"224","id_m":"28","subject":"uneori castigi uneori pierzi","detail":"john maxwell","miniatura":"adm\/2s281517132389376.png","topic_id":"4","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"222","id_m":"28","subject":"studiul china","detail":"colin campbell","miniatura":"","topic_id":"4","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"221","id_m":"28","subject":"Incepe sa gandesti","detail":"john .c maxwell","miniatura":"adm\/2s281517122534599.png","topic_id":"4","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"217","id_m":"28","subject":"","detail":"","miniatura":"adm\/2s281517067003000.png","topic_id":"4","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"216","id_m":"28","subject":"titlu","detail":"detaliu","miniatura":"adm\/2s281517066344984.png","topic_id":"4","sticky":"1","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"215","id_m":"28","subject":"test 2","detail":"","miniatura":"adm\/2s281517062909381.png","topic_id":"4","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"214","id_m":"28","subject":"test","detail":"","miniatura":"","topic_id":"","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"213","id_m":"28","subject":"carte","detail":"","miniatura":"adm\/1s281517057746926.png","topic_id":"","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"212","id_m":"28","subject":"test","detail":"","miniatura":"","topic_id":"","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"211","id_m":"28","subject":"my new article","detail":"","miniatura":"","topic_id":"","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"210","id_m":"28","subject":"my new article","detail":"","miniatura":"","topic_id":"","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"209","id_m":"28","subject":"my new article","detail":"","miniatura":"","topic_id":"","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"208","id_m":"28","subject":"Article nr169","detail":"","miniatura":"adm\/1id311516044878331.png","topic_id":"1","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"207","id_m":"28","subject":"Article nr163","detail":"","miniatura":"adm\/1id311516044817765.png","topic_id":"1","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"206","id_m":"28","subject":"Article nr165","detail":"","miniatura":"adm\/1id311516044830521.png","topic_id":"1","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"205","id_m":"28","subject":"Article nr166","detail":"","miniatura":"adm\/1id311516044836439.png","topic_id":"1","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"204","id_m":"28","subject":"Article nr168","detail":"","miniatura":"adm\/1id311516044864501.png","topic_id":"1","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"203","id_m":"28","subject":"Article nr167","detail":"","miniatura":"adm\/1id311516044855822.png","topic_id":"1","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"202","id_m":"28","subject":"Article nr158","detail":"","miniatura":"adm\/1id311516044749702.png","topic_id":"1","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"201","id_m":"28","subject":"Article nr162","detail":"","miniatura":"adm\/1id311516044809440.png","topic_id":"1","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"200","id_m":"28","subject":"Article nr160","detail":"","miniatura":"adm\/1id311516044781286.png","topic_id":"1","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"199","id_m":"28","subject":"Article nr161","detail":"","miniatura":"adm\/1id311516044793504.png","topic_id":"1","sticky":"0","icon":"adm\/16caafc9b39b5d68.png","moderator":"1"},{"id_s":"198","id_m":"28","subject":"Article nr157","detail":"","miniatura":"adm\/1id311516044732693.png","topic_id":"1","sticky":"0",
Message longer than Log limit (4000). Message was truncated.
AsyncLoad failed: java.lang.RuntimeException: File not found:
 
Upvote 0

hookshy

Well-Known Member
Licensed User
Longtime User
jobdone from main activity
B4X:
Sub JobDone(Job As HttpJob)

    ProgressDialogHide

    
Try
    Log (Job.Getstring)
    
    

If Job.Success=False Then
    ULV.ClearContent
    snac(Job.JobName&" no response")    'display something there       
End If
    

                

Select Job.JobName
        Case "update_topic"
            
            If Job.Success Then                 
                Dim res As String
                res = Job.GetString
                Dim parser As JSONParser
                parser.Initialize(res)
                
                Dim listofpo As List
                listofpo = parser.NextArray
                
                update_topic_done(listofpo)
            End If
            
            
        Case "get_search"
            
            If Job.Success Then
                
                
                pnl_search.Left=Activity.Width
                
                Dim res As String
                res = Job.GetString
                Dim parser As JSONParser
                parser.Initialize(res)
                Dim listofpo As List
                listofpo = parser.NextArray
                build_qs(listofpo)
            End If
    
            
        
        Case "publica_sesiune"
        If Job.Success Then     
                    PushSettings("general","Nucifere","Nucifere a adaugat un articol nou")
        End If
    
        Case "page0"
                select_page(0)
                If Job.Success Then
                    Try
                        Dim res As String
                        res = Job.GetString
                        Dim parser As JSONParser
                        parser.Initialize(res)
                        Dim listofpo As List
                        listofpo = parser.NextArray 'returns a list with maps
                        build_qs(listofpo)
                    Catch
                    End Try
                
                End If
                    
        Case "page1"
        select_page(1)
        If Job.Success Then
            Dim res As String
            res = Job.GetString
            Dim parser As JSONParser
            parser.Initialize(res)
            Dim listofpo As List
            listofpo = parser.NextArray
            build_qs(listofpo)           
                End If
        
            Case "page2"
                select_page(2)
                If Job.Success Then
                    Dim res As String
                    res = Job.GetString
                    Dim parser As JSONParser
                    parser.Initialize(res)
                    Dim listofpo As List
                    listofpo = parser.NextArray
                    build_qs(listofpo)
                End If
        
            Case "page3"
                select_page(3)
                If Job.Success Then
                    Dim res As String
                    res = Job.GetString
                    Dim parser As JSONParser
                    parser.Initialize(res)
                    Dim listofpo As List
                    listofpo = parser.NextArray
                    build_qs(listofpo)
                End If
        
    
    
        Case "more_from"
        select_page(-1)
        If Job.Success Then
                    Dim res As String
                    res = Job.GetString
                    Dim parser As JSONParser
                    parser.Initialize(res)
            Dim listofpo As List
            listofpo = parser.NextArray
            build_qs(listofpo)           
        End If
    
    

        Case "get_members"
            select_page(4)
            
                If Job.Success Then
                    Dim res As String
                    res = Job.GetString
                    Dim parser As JSONParser
                    parser.Initialize(res)
                    Dim listofpo As List
                    listofpo = parser.NextArray
                    build_members(listofpo)
                End If

'        Case "new_conversation"
'            select_page(4)
'           
'                If Job.Success Then
'                    Dim res As String
'                    res = Job.GetString
'                    Dim parser As JSONParser
'                    parser.Initialize(res)
'                    Dim listofpo As List
'                    listofpo = parser.NextArray
'                    start_conversation(listofpo)
'                End If


        Case "insert_sesiune"
                If Job.Success Then
                    'get the session id
                    
                    
                    If moderator Then
                        snac("Postarea a fost inregistrata")
                    Else
                        snac("Am transmis solicitarea ta")
                    End If
                
                    If edit_reply.IsInitialized Then edit_reply.Text=""
                    pnl_a.Left=Activity.Width
                    pnl_profil.Left=Activity.Width
                    
                    If moderator Then
                        page0_click
                    Else
                        page2_click
                        End If
                        
                update_mesaje'contorizeaza numarul de mesaje primite                           
                End If
            
            
        Case "insert_favorite"
            If Job.Success Then
                'get the session i
                            
                snac("Am salvat optiunea ta")                           
            End If     
                
        Case "del_favorite"
            If Job.Success Then             
                snac("Intrarea a fost stearsa")   
                
                favorite_click
                                        
            End If         
            
            Case "is_favorite"
                If Job.Success Then
                    Try
                        
                    
                    Dim res As String
                    res = Job.GetString
                    Dim parser As JSONParser
                    parser.Initialize(res)
                    Dim listofpo As List
                    listofpo = parser.NextArray
                    If listofpo.Size=0 Then insert_favorite(selected_id)
                    If listofpo.Size=1 Then snac("Produsul se gaseste deja in favorite")   
                        
                    Catch
                        Log(LastException)
                    End Try   
                    
                End If

    
    Case "create_profil"
    
    If Job.Success=True Then
        'profilul a fost salvat in baza de date
        snac("Profilul a fost creat")   
        afisare_meniu                                   
        afisare_profil_salvat_click
    End If   
        
    Case "update_profil"       
    If Job.Success Then
        snac("Profilul a fost actualizat")
        'actualizeaza informatii despre profil
        afisare_meniu   
        afisare_profil_salvat_click
    End If
        
    
    
    Case "member_login"
    If Job.Success Then confirmare_login
    
    Case "member_logout"
    If Job.Success Then confirmare_logout   
        
    Case "validare_profil"
            If Job.Success Then
                
                Dim res As String
                res = Job.GetString
                Dim parser As JSONParser
                parser.Initialize(res)
    
                Dim listofpo As List
                listofpo = parser.NextArray
                                
                Dim po As Map
                po = listofpo.Get(0)
                
                Dim id_m As String
                id_m=po.Get("id_m")
                
                numeprofil=po.Get("numeprofil")
                File.WriteString(File.DirInternal,"numeprofil.txt",numeprofil)
                
                'update device token for comunication purpose fixed bug (user is ready to register to token chanel after registration)
                If devicetoken.Length>0 Then
                    update_token(devicetoken)
                    File.WriteString(File.DirInternal,"devicetoken.txt",devicetoken)
                End If
                
                
                Msgbox(numeprofil,"Bine ai venit")
                
                myid=id_m 'profil gata de utilizare
                File.WriteString(File.DirInternal,"myid.txt",myid)
                File.WriteString(File.DirInternal,"profil.txt",myid)
                afisare_meniu'update the name in the left window
                
                afisare_profil_salvat_click
                
                If File.Exists(File.DirInternal,"numeprofil.txt")=False And File.Exists(File.DirInternal,"pass.txt")=False Then
                    importa_profil(listofpo)'utilizatorul a schimbat telefonul sau se logeaza pe un alt dispozitiv
                
                End If
                
            Else
                
                Msgbox("Server indisponibil pornexste conexiunea la internet sau incearca mai tarziu","Account validation")   
    
            End If
        
        Case "members_iconupdate"
            If Job.Success Then
                afisare_profil_salvat_click
                afisare_meniu
                snac("Poza de profil a fost salvata cu success")
            End If
            
    
    

        Case "fcm"
            
            If Job.Success Then ToastMessageShow("Firebase works",True)
        
        
        Case "is_moderator"
                
            'Try
                
            If Job.Success Then
                Try
                    Dim res As String
                    res = Job.GetString
                    Dim parser As JSONParser
                    parser.Initialize(res)
            
            
                Dim listofpo As List
                listofpo = parser.NextArray
                
                If listofpo.Size>0 Then
                    Dim po As Map
                    po=listofpo.Get(0)
                    
                    Dim moderatorx As Int
                    moderatorx=po.Get("moderator")
                    If moderatorx=1 Then
                        Log("success get_article")
                        File.WriteString(File.DirInternal,"moderator.txt","moderator")
                        moderator=True
                        snac("Mod moderator")
                        afisare_meniu
                    End If
                    
                End If
            
                Catch
                End Try
                
            End If
                
            'Catch
            'End Try
            

                    
        Case "get_favorite"
            select_page(-1)
            If Job.Success Then
                Try
                    Dim res As String
                    res = Job.GetString
                    Dim parser As JSONParser
                    parser.Initialize(res)
            Dim listofpo As List
            listofpo = parser.NextArray 'returns a list with maps
            build_qs(listofpo)
                Catch
                End Try
                
            End If
    
    
        Case "update_token"
            If Job.Success Then
                snac("token notification update succesful")
                'ToastMessageShow("Token update done",True)
            End If

End Select

Catch
Log("main_jobdone"&Job.JobName&LastException)
End Try


If Job.Success=False And Job.JobName="fcm" Then ToastMessageShow("Firebase fcm job false",True)
'If Job.Success=False Then snac(Job.JobName&" "&"failed")   


Job.Release

    
    
End Sub
 
Upvote 0

hookshy

Well-Known Member
Licensed User
Longtime User
this is what I can not understand :

getServiceInstance failed!
tlcMemOpenInternal: open device file failed for R/W: 13 (Permission denied)
tlcMemOpenInternal: open device file for read only
 
Upvote 0

KMatle

Expert
Licensed User
Longtime User
@hookshy : We are really willing to help you, but... Let's try to solve ONE problem. Create a small demo project with the permission problem ONLY and upload it here (export to zip). NO OkHttpUtils job and NO MySql. Nothing else. Just the permission issue.
 
Upvote 0
Top