گرفتن آدرس واقعی هنگام انتخاب عکس از گالری با ContentChooser در B4A


گرفتن آدرس واقعی هنگام انتخاب عکس از گالری با ContentChooser در B4A
۲۶ اردیبهشت ۱۳۹۸
2437 بازدید
نویسنده:

وقتی با ContentChooser یه عکسی از گالری انتخاب میکنیم آدرسی که توی رویداد ContentChooser_Result بهمون برمیگردونه طوری هست که قابل استفاده از بعضی جاها مثل “آپلود عکس” نیست.

نمونه آدرس برگردونده شده:

content://com.android.providers.media.documents/document/video%3A267481

 

✅ راه حل

 

  • برای گرفتن آدرس واقعی تصویر مثل: file://sdcard/folder/img.jpg از تابع زیر استفاده کنید:

 

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

 

کتابخانه های ContentResolver و sql رو تیک بزنید.

 

  • استفاده در رویداد ContentChooser :

 

Sub ContentChooser_Result (Success As Boolean, Dir As String, FileName As String)
  Log(  GetPathFromContentResult(FileName)  ) 'چاپ آدرس واقعی
End Sub

 


آموزش برنامه نویسی اندروید

پژمان نیکروان
پژمان نیکروان

پژمان نیکروان هستم؛ مدیر وب سایت کافه توسعه، شروع فعالیتم به برنامه نویسی از سال 1392 بوده و هدف از ایجاد وبسایت اشتراک گذاری تجارب خودم و دیگر برنامه نویسان هست.

ارسال دیدگاه

می توانید از تگ های HTML نیز استفاده کنید :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

دیدگاه های مطلب:
Profile Comment
محمدرضا

سلام
وقت بخیر
نگفتید که از چه کتابخانه هایی استفاده شده و نیاز هست؟

پاسخ دادن

11 اسفند 1398