Perdonami
@fifiddu70, non ti offendere, mi sa che non hai capito un bel niente della condivisione dei file con SDK 24+
Questo pezzo non vuol dire niente e non fa niente
Dim out As OutputStream
'Dim testfolder As String
'testfolder = rp.GetSafeDirDefaultExternal("ticket")
rp.GetSafeDirDefaultExternal(File.DirDefaultExternal)
Dopo che hai chiesto i permessi per leggere e scrivere nella RootExternal non vuol dire che puoi usare il link diretto per condividere il file.
Per condividere il file, devi creare, una cartella SHARED all'interno della tua App e renderla zona Salva (GetSafeDirDefaultExternal). Poi devi copiare il file creato nella zona Salva e renderla condivisibile con CreateFileProviderUri (che ho allegato)
Ottieni un link che puoi condividere..... Il codice andrebbe scritto così
Sub Save
Dim P As Phone
rp.CheckAndRequest ( rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
Wait For Activity_PermissionResult ( Permission As String, Result As Boolean)
If Result Then
Dim out As OutputStream
out = File.OpenOutput(File.DirDefaultExternal, "ticket.jpg", False)
c.Bitmap.WriteToStream(out, 100, "JPEG")
out.Close
b = ResizeBitmap(LoadBitmap(File.DirDefaultExternal, "ticket.jpg"), 800, 500)
If P.SdkVersion>=24 Then
Dim shared As String
shared = rp.GetSafeDirDefaultExternal("ticket")
File.Copy(File.DirDefaultExternal, "ticket.jpg",shared, "ticket.jpg")
Sleep(500)
share.sharebinary (CreateFileProviderUri(shared, "ticket.jpg"), "image/jpg", "CONDIVIDI Boarding Pass con:", "Ti Piace Boarding Pass? Condividila con i tuoi amici")
' IO CONDIVEDEREI COSI
' Dim in As Intent
' in.Initialize(in.ACTION_VIEW, CreateFileProviderUri(shared,"ticket.jpg"))
' in.SetType("image/jpeg")
' in.Flags = 1
' StartActivity(in)
Else
share.sharebinary ("file://" & File.DirDefaultExternal & "/" & "ticket.jpg", "image/jpg", "CONDIVIDI Boarding Pass con:", "Ti Piace Boarding Pass? Condividila con i tuoi amici")
End If
Else
ToastMessageShow("Sorry permission denied",False)
End If
End Sub
Sub CreateFileProviderUri (Dir As String, FileName As String) As Object
Dim FileProvider As JavaObject
Dim context As JavaObject
context.InitializeContext
'File.Copy(Dir, FileName, shared, FileName)
FileProvider.InitializeStatic("android.support.v4.content.FileProvider")
Dim f As JavaObject
f.InitializeNewInstance("java.io.File", Array(shared, FileName))
Return FileProvider.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f))
End Sub
Ti ho
riscritto il codice, spero che tu capisca di aver ricevuto un grosso aiuto.
Nel futuro prima di spingerti su nuovi orizzonti informatici a te sconosciuti, assicurati di aver studiato a dovere i tutorial.
Non puoi sperare fare cose
serie e limitarti a fare lo sviluppatore hobbista, che copia e incolla pezzi di codice presi dal forum sperando che poi funzionino.
P.S. La Samsung ha tante colpe, ma questa volta la colpa è tua