Android Question granturipermission() error

zarkap

Member
when app is runnig
this is error :
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=17228, uid=10069 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()

my code is:
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: false
#End Region

Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim choose As ContentChooser
End Sub

Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.

Private ADDMAHSOLScrollView1 As ScrollView
Private ADDMAHSOL2Label1 As Label
Private ADDMAHSOL2Button2 As Button
Private ADDMAHSOL2Button1 As Button
Private ADDMAHSOLPanel2 As Panel

Dim i As Int=0
Dim scrol As Panel

Dim filename1 As String

Dim show As HttpJob
Dim send As HttpJob
Dim upload As HttpJob

Private ADDMAHSOLEditText1 As EditText
Private ADDMAHSOLEditText2 As EditText
Private ADDMAHSOLEditText3 As EditText
Private ADDMAHSOLEditText4 As EditText
Private ADDMAHSOLSpinner1 As Spinner

Private ADDMAHSOLLabel3 As Label
Private ADDMAHSOLImageView1 As ImageView
End Sub

Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("ADDMAHSOL")
choose.Initialize("choose1")
show.Initialize("show1",Me)
show.Download("http://shopraise.ir/mahsolat.php")
ADDMAHSOLPanel2.Visible=False

End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Private Sub ADDMAHSOLButton1_Click
ADDMAHSOLPanel2.Visible=True
End Sub

Private Sub ADDMAHSOL2Button2_Click

End Sub

Private Sub ADDMAHSOL2Button1_Click

End Sub

Sub JobDone( job1 As HttpJob)
If job1.Success Then
If job1.JobName="show1" Then
Dim parser As JSONParser
parser.Initialize(job1.GetString)
Dim list As List
list.Initialize
list=parser.NextArray
i=0
For Each map As Map In list
scrol.Initialize("scrol1")
ADDMAHSOLScrollView1.Panel.AddView(scrol,0,2+(62*i),100%x,60)
scrol.LoadLayout("ADDMAHSOL2")
ADDMAHSOL2Button1.Tag=map.Get("code")
ADDMAHSOL2Button2.Tag=map.Get("code")
ADDMAHSOL2Label1.Text=map.Get("name")
i=i+1
Next
ADDMAHSOLScrollView1.Panel.Height=62*i
End If
If job1.JobName="send1" Then

End If
If job1.JobName="upload1" Then
MsgboxAsync("upload ok","")
End If
End If

End Sub

Private Sub ADDMAHSOLButton2_Click
send.Initialize("send1",Me)
send.PatchString("http://shopraise.ir/addmahsol.php","code="& ADDMAHSOLEditText4.Text &"&name="& ADDMAHSOLEditText1.Text &"&tag="&"q"&"&gheymat="&ADDMAHSOLEditText2.Text &"&picture="& ADDMAHSOLLabel3.Text & "&tozihat="&ADDMAHSOLEditText3.Text)
upload.Initialize("upload1",Me)
upload.PostFile("http://shopraise.ir/file.php?FileName=" & ADDMAHSOLLabel3.Text,"",ADDMAHSOLLabel3.Text)
End Sub

Private Sub ADDMAHSOLButton3_Click
choose.Show("image/*","انتخاب عکس")
End Sub

Sub choose1_Result (Success As Boolean, Dir As String, filename As String)
If Success=True Then
filename1=GetPathFromContentResult(filename)
Dim getindex As Int =filename1.LastIndexOf("/")+1
ADDMAHSOLLabel3.Text=filename1.SubString(getindex)
ADDMAHSOLImageView1.Bitmap=LoadBitmapSample("",filename1,ADDMAHSOLImageView1.Width,ADDMAHSOLImageView1.Height)
End If
End Sub

Sub GetPathFromContentResult(UriString As String) As String
If UriString.StartsWith("/") Then Return UriString 'If the user used a file manager to choose the image
Dim Cursor1 As Cursor
Dim Uri1 As Uri
Dim Proj() As String = Array As String("_data")
Dim cr As ContentResolver
cr.Initialize("")
If UriString.StartsWith("content://com.android.providers.media.documents") Then
Dim i As Int = UriString.IndexOf("%3A")
Dim id As String = UriString.SubString(i + 3)
Uri1.Parse("content://media/external/images/media")
Cursor1 = cr.Query(Uri1, Proj, "_id = ?", Array As String(id), "")
Else
Uri1.Parse(UriString)
Cursor1 = cr.Query(Uri1, Proj, "", Null, "")
End If
Cursor1.Position = 0
Dim res As String
res = Cursor1.GetString("_data")
Cursor1.Close
Return res
End Sub
 

zarkap

Member
when app is run
this is error :
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=17228, uid=10069 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission():
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=17228, uid=10069 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
my code is:
B4X:
Private Sub ADDMAHSOLButton2_Click
send.Initialize("send1",Me)
send.PatchString("http://shopraise.ir/addmahsol.php","code="& ADDMAHSOLEditText4.Text &"&name="& ADDMAHSOLEditText1.Text &"&tag="&"q"&"&gheymat="&ADDMAHSOLEditText2.Text &"&picture="& ADDMAHSOLLabel3.Text & "&tozihat="&ADDMAHSOLEditText3.Text)
upload.Initialize("upload1",Me)
upload.PostFile("http://shopraise.ir/file.php?FileName=" & ADDMAHSOLLabel3.Text,"",ADDMAHSOLLabel3.Text)
End Sub

Private Sub ADDMAHSOLButton3_Click
choose.Show("image/*","انتخاب عکس")
End Sub

Sub choose1_Result (Success As Boolean, Dir As String, filename As String)
If Success=True Then
filename1=GetPathFromContentResult(filename)
Dim getindex As Int =filename1.LastIndexOf("/")+1
ADDMAHSOLLabel3.Text=filename1.SubString(getindex)
ADDMAHSOLImageView1.Bitmap=LoadBitmapSample("",filename1,ADDMAHSOLImageView1.Width,ADDMAHSOLImageView1.Height)
End If
End Sub

Sub GetPathFromContentResult(UriString As String) As String
If UriString.StartsWith("/") Then Return UriString 'If the user used a file manager to choose the image
Dim Cursor1 As Cursor
Dim Uri1 As Uri
Dim Proj() As String = Array As String("_data")
Dim cr As ContentResolver
cr.Initialize("")
If UriString.StartsWith("content://com.android.providers.media.documents") Then
Dim i As Int = UriString.IndexOf("%3A")
Dim id As String = UriString.SubString(i + 3)
Uri1.Parse("content://media/external/images/media")
Cursor1 = cr.Query(Uri1, Proj, "_id = ?", Array As String(id), "")
Else
Uri1.Parse(UriString)
Cursor1 = cr.Query(Uri1, Proj, "", Null, "")
End If
Cursor1.Position = 0
Dim res As String
res = Cursor1.GetString("_data")
Cursor1.Close
Return res
End Sub
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User

1631085613279.png



Correct code:
B4X:
choose.Show("image/*","انتخاب عکس")
Wait For choose1_Result (Success As Boolean, Dir As String, filename As String)
If Success Then
 Dim bmp As B4XBitmap = XUI.LoadBitmapResize(Dir, FileName, ...)
 
Upvote 0
Top