Italian Apertura file PDF alla pressione di un bottone.

Netbrother

Member
Salve a tutti 👋
In questi giorni di clausura forzata causa Covid-19 sto studiando B4A per realizzare un'App per la mia associazione; Molte cose le ho già "digerite" e ci sto prendendo gusto ma moltissime, ovviamente, sono quelle ancora da capire.
Ora mi sono arenato nel tentativo di far aprire (con l'app di default del sistema presumo) un file .pdf alla pressione di un bottone.
E' possibile lasciare il file in DirAssets o va copiato da un'altra parte?
Ho trovato un po di suggerimenti su vecchi post ma non sono riuscito ad utilizzare i pezzi di codice proposti di cui, ovviamente, non capisco ancora tutti i dettagli...
Qualcuno mi potrebbe dare qualche dritta spiegandomi le cose... For Dummies? 🙂
Grazie anticipatamente.
 

sirjo66

Well-Known Member
Licensed User
la cartella DirAssets in realtà non è una vera e propria cartella, è l'insieme di files contenuti nel tuo file APK (ecco perchè è una cartella a sola lettura), ed è accessibile solo al tuo programma, non da programmi esterni.
Dovrai quindi per forza mettere il tuo file su di una cartella accessibile anche al visualizzatore di file PDF, quindi ad esempio non puoi metterlo sulla DirInternal.
Io personalmente lo metterei su DirRootExternal/nomeDelMioProgramma in modo da non avere tutto sulla root ma su una subdirectory
 

menneaduplo

Member
Licensed User
Molti esempi di pdf che trovi nel blog sono validi solo sulle vecchie versioni di Android.
Devi innanzitutto studiarti la Fileprovider che serve per condifidere file tra la tua app e app esternte (tipo un pdf reader).
La puoi trovare sul blog a questo indirizzo:
Poi per aprire il file col pdf reader puoi usare un codice come questo:

B4X:
        File.copy(TuaCartellaOrigine, NomePdfDaMostrare, Starter.Provider.SharedFolder, NomePdfDaMostrare)
        Dim Intent1 As Intent
        Intent1.Initialize(Intent1.ACTION_VIEW, Starter.Provider.GetFileUri(NomePdfDaMostrare))
        Intent1.SetType("application/pdf")
        Intent1.Flags = 1
        StartActivity(Intent1)
 

Netbrother

Member
la cartella DirAssets in realtà non è una vera e propria cartella, è l'insieme di files contenuti nel tuo file APK (ecco perchè è una cartella a sola lettura), ed è accessibile solo al tuo programma, non da programmi esterni.
Dovrai quindi per forza mettere il tuo file su di una cartella accessibile anche al visualizzatore di file PDF, quindi ad esempio non puoi metterlo sulla DirInternal.
Io personalmente lo metterei su DirRootExternal/nomeDelMioProgramma in modo da non avere tutto sulla root ma su una subdirectory

Grazie della dritta, mi era sfuggito il fatto che DirAssets può essere vista solo dalla mia applicazione, pensavo che i PDF li devo solo leggere e quindi non fosse un problema l'attributo "sola lettura".... ✋
 

Netbrother

Member
Molti esempi di pdf che trovi nel blog sono validi solo sulle vecchie versioni di Android.
Devi innanzitutto studiarti la Fileprovider che serve per condifidere file tra la tua app e app esternte (tipo un pdf reader).
La puoi trovare sul blog a questo indirizzo:
Poi per aprire il file col pdf reader puoi usare un codice come questo:

B4X:
        File.copy(TuaCartellaOrigine, NomePdfDaMostrare, Starter.Provider.SharedFolder, NomePdfDaMostrare)
        Dim Intent1 As Intent
        Intent1.Initialize(Intent1.ACTION_VIEW, Starter.Provider.GetFileUri(NomePdfDaMostrare))
        Intent1.SetType("application/pdf")
        Intent1.Flags = 1
        StartActivity(Intent1)
Grazie 1000 menneaduplo, gentilissimo. Ora ci studio un pò su, spero di capirci qualcosa.
 
Top