Italian [Risolto] [B4A] Mail con Provider: errore

Aldo's

Active Member
Licensed User
Buongiorno a tutti
Vi spiego quello che ho fatto:
1) in Main - Process_Global ho dichiarato:
B4X:
    Public DBDir As String=File.DirInternal
    Public DBFile As String="nomefile.est"

2) ho aggiunto la libreria FileProvider
3) nella Sub Class_Global ho messo
B4X:
    Private Provider As FileProvider

4) nella Sub B4XPage_Created ho messo
B4X:
    Provider.Initialize

5) il codice in cui provo a mandare la mail è il seguente:
B4X:
Private Sub ImageView1_Click
    Dim Mail As String = "indirizzovalido@mail.it"
    Dim NuovaDir As String = Provider.SharedFolder
    File.Copy(Main.DBDir,Main.DBFile,NuovaDir,Main.DBFile)
    Dim email As Email
    Dim subject As String = "Invio file"
    email.To.Add(Mail)
    email.Subject = subject
    email.Body = "Invio automatico del file db"
    email.Attachments.Add(Provider.GetFileUri("nomefile.est"))
    StartActivity(email.GetIntent)
End Sub

Quando lancio la procedura di invio mail mi restituisce il seguente errore:
Error occurred on line: 34 (FileProvider)
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4j.object.JavaObject.RunMethod(JavaObject.java:132)
at b4a.example.fileprovider._getfileuri(fileprovider.java:123)
at b4a.example.b4xmainpage._imageview1_click(b4xmainpage.java:601)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:80)
at android.view.View.performClick(View.java:8160)
at android.view.View.performClickInternal(View.java:8137)
at android.view.View.access$3700(View.java:888)
at android.view.View$PerformClick.run(View.java:30236)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8653)
at java.lang.reflect.Method.invoke(Native Method)

Come ne esco?
Grazie
 

Aldo's

Active Member
Licensed User
Chiedo scusa a tutti, ho risolto aggiungendo al Manifest questo:
B4X:
AddManifestText(<uses-permission
   android:name="android.permission.WRITE_EXTERNAL_STORAGE"
   android:maxSdkVersion="30" />
)

AddApplicationText(
  <provider
  android:name="android.support.v4.content.FileProvider"
  android:authorities="$PACKAGE$.provider"
  android:exported="false"
  android:grantUriPermissions="true">
  <meta-data
  android:name="android.support.FILE_PROVIDER_PATHS"
  android:resource="@xml/provider_paths"/>
  </provider>
)
CreateResource(xml, provider_paths,
   <files-path name="name" path="shared" />
)
 

Star-Dust

Expert
Licensed User
Longtime User
Chiedo scusa a tutti, ho risolto aggiungendo al Manifest questo:
Visto che ti scusi, ti ringrazio.
vale per la prossima volta
 

Aldo's

Active Member
Licensed User
Chiedo scusa di aver chiesto scusa ma...
...non funziona.
O meglio, non mi da più l'errore, ma mi scrive che "Non è stato possibile allegare il file".
Cosa devo fare?
 

Aldo's

Active Member
Licensed User
Ho già corretto in questa maniera, e ancora mi da errore.
Ho letto anche il post che mi hai suggerito ed è da quello che ho risolto il primo errore.
Temo che il problema possa essere la directory di partenza del provider.sharedfolder che è file.dirinternal, ma in un'altra app mi funziona senza problema...ma questa è solo una sensazione.
 

Aldo's

Active Member
Licensed User
Stesso errore, giusto?
No non mi da errore, ma non mi allega il file e mi da il messaggio (nel programma della Posta) "Impossibile allegare il file".
 

Aldo's

Active Member
Licensed User
Perché non hai scritto:
email.Attachments.Add(Provider.GetFileUri(Main.DBFile))
?
Funziona, e funziona anche se metto "nomefile.est" sia sopra dove copio in SharedFolder che sotto nella GetFileUri...in poche parole vuole la stessa indicazione.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…