Android Question share url files as Picture

ibra939

Active Member
Licensed User
Longtime User
I have url files as picture when i need to share it to whatapp as file provider not share i don't knows why

I check this link Files provider

share url as photo for whatapp:
Sub DownloadFitimage(url As String, TargetImage As ImageView)

    Dim job As HttpJob

    job.Initialize("", Me)

    job.Download(url)

    Wait For (job) JobDone(job As HttpJob)

    If job.Success Then

        Dim bmp As Bitmap = job.GetBitmap

        Dim scaledBmp As Bitmap = bmp.Resize(TargetImage.Width, TargetImage.Height, True)

        TargetImage.Bitmap = scaledBmp

        TargetImage.Gravity = Gravity.FILL

    Else

        Log("Error downloading image: " & job.ErrorMessage)

    End If

    job.Release

End Sub


Sub img_Click

    Dim now As Long = DateTime.Now

    If now - lastClickTime < doubleClickDelay Then

        Dim img As ImageView = Sender

        Dim imageUrl As String = img.Tag


        Dim j As HttpJob

        j.Initialize("downloadimage", Me)

        j.Download(imageUrl)

        Wait For (j) JobDone(j As HttpJob)

        If j.Success Then

            Dim filename As String = "temp.jpg"

            Dim out As OutputStream = File.OpenOutput(File.DirInternalCache, filename, False)

            File.Copy2(j.GetInputStream, out)

            out.Close

            j.Release

            ShareImageWhatsApp(File.DirInternalCache, filename)

        Else

            Log("Download failed: " & j.ErrorMessage)

            j.Release

        End If

    Else

        lastClickTime = now

    End If

End Sub


Sub SaveImageToTempFile(bmp As Bitmap, TempFileName As String) As String

    Dim out As OutputStream = File.OpenOutput(File.DirInternal, TempFileName, False)

    bmp.WriteToStream(out, 100, "JPEG")

    out.Close

    Return TempFileName

End Sub


Sub ShareImageWhatsApp(Dir As String, FileName As String)

    Dim uri As Object = Provider.GetFileUri(Dir, FileName)


    Dim i As Intent

    i.Initialize(i.ACTION_SEND, "")

    i.SetType("image/*")

    i.PutExtra("android.intent.extra.STREAM", uri)

    i.Flags = Bit.Or(i.Flags, 1) ' FLAG_GRANT_READ_URI_PERMISSION


    StartActivity(i)

End Sub
 
Last edited:

ibra939

Active Member
Licensed User
Longtime User
using
i try:
Sub ShareExistingImageToWhatsApp(FileName As String)
    Dim realDir As String = File.Combine(File.DirRootExternal, "Pictures/MyApp")

    If File.Exists(realDir, FileName) = False Then
        ToastMessageShow("Photo not found", True)
        Return
    End If

    Dim in As Intent
    in.Initialize(in.ACTION_VIEW, "")
    Provider.SetFileUriAsIntentData(in, FileName)
    'Type must be set after calling SetFileUriAsIntentData
    in.SetType("image/*")
    'i.PutExtra("android.intent.extra.STREAM", uri)
    'i.Flags = Bit.Or(i.Flags, 1)
    in.SetComponent("com.whatsapp/.ContactPicker")

    StartActivity(in)
End Sub
 
Upvote 0

aeric

Expert
Licensed User
Longtime User
This is part of my code in https://www.b4x.com/android/forum/threads/webviewsharepdf.165584/
B4X:
Public Sub SharePDF
    File.Copy(File.DirInternal, "example.pdf", provider.SharedFolder, "example.pdf")
    'Dim filesize As Long = File.Size(provider.SharedFolder, "example.pdf")
    'Log(NumberFormat2(filesize/1024, 1, 2, 0, False) & "KB")
    Dim in As Intent
    in.Initialize(in.ACTION_SEND, "")
    in.SetPackage("com.whatsapp")
    in.PutExtra("android.intent.extra.STREAM", provider.GetFileUri("example.pdf"))
    in.SetType("application/pdf")
    StartActivity(in)
End Sub
Change PDF mime and filename to image file.
 
Upvote 0

ibra939

Active Member
Licensed User
Longtime User


i make test and modfiy some of the code is working perfectly Aeric .
Thanks for Sharing .

last code modfiy:
Private Sub Sharetowhatsapp_Click
    Dim galleryDir As String = File.Combine(File.Combine(File.DirRootExternal, "Pictures"), "MyApp")
    If LastSavedFileName = "" Or File.Exists(galleryDir, LastSavedFileName) = False Then
        ToastMessageShow("Not found the picture", True)
        Return
    End If

    File.Copy(galleryDir, LastSavedFileName, Provider.SharedFolder, LastSavedFileName)

    Dim in As Intent
    in.Initialize(in.ACTION_SEND, "")
    in.SetPackage("com.whatsapp")
    in.PutExtra("android.intent.extra.STREAM", Provider.GetFileUri(LastSavedFileName))
    in.SetType("image/jpeg")
    StartActivity(in)
End Sub
 
Upvote 0

Isaacc

Member
did it stop working or still working for you?
 
Upvote 0

ibra939

Active Member
Licensed User
Longtime User
Working fine
 
Upvote 0
Cookies are required to use this site. You must accept them to continue using the site. Learn more…