Italian Lettura file pdf

Never99

Member
Salve Gente, dovrei aprire un file pdf al click del button. siccome ho provato con webview ma la schermata rimane bianca, non so in che altro modo provare( la molta inesperienza in b4a).
sapete aiutarmi? grazie.
 

Sagenut

Expert
Licensed User
Longtime User
Guarda quí
PDF by Intent
In pratica dovrebbe farti aprire il PDF con l'app già configurata di default sul dispositivo.
Sono da cellulare e non sono davanti al PC quindi non posso fare molto di più che darti questo indizio per cercare di farti sbloccare. :)
 
Last edited:

Xfood

Expert
Licensed User
Credo che nel tuo caso devi prima scaricare il pdf in locale, e poi aprirlo, prova questo, dovrebbe fare al caso tuo.
 

Never99

Member
Credo che nel tuo caso devi prima scaricare il pdf in locale, e poi aprirlo, prova questo, dovrebbe fare al caso tuo.
forse mi sono espresso male...io il pdf lo ho già perche l'ho scaricato da quel sito sopra che ho postato. volevo solo capire come far scaricare o visualizzare, il file pdf , al click del button tutto qua.
 

Xfood

Expert
Licensed User
Ok, piu tardi appena rientro, faccio una piccola acrivity, con un bottone apripdf, dove si suppone che il pdf e nella cartella download e ti posto l'esempio qui.
 

Xfood

Expert
Licensed User
hoprovato a leggere il tuo file copiando nella cartella download del mio telefono,
ma purtroppo anche dopo diverse prove mi da questo errore.
B4X:
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
main_openpdf_click (java line: 483)
android.os.FileUriExposedException: file:///storage/emulated/0/Download/regolamento-190220.pdf exposed beyond app through Intent.getData()
    at android.os.StrictMode.onFileUriExposed(StrictMode.java:1978)
    at android.net.Uri.checkFileUriExposed(Uri.java:2371)
    at android.content.Intent.prepareToLeaveProcess(Intent.java:10936)
    at android.content.Intent.prepareToLeaveProcess(Intent.java:10887)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1667)
    at android.app.Activity.startActivityForResult(Activity.java:4689)
    at android.app.Activity.startActivityForResult(Activity.java:4647)
    at android.app.Activity.startActivity(Activity.java:5008)
    at android.app.Activity.startActivity(Activity.java:4976)
    at anywheresoftware.b4a.keywords.Common.StartActivity(Common.java:857)
    at b4a.openPdf.main._openpdf_click(main.java:483)
    at b4a.openPdf.main$ResumableSub_Button1_Click.resume(main.java:432)
    at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:267)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:207)
    at anywheresoftware.b4a.BA$2.run(BA.java:387)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7073)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
mi sa che ti serve un esperto, io sono un principiante scusami.
allego il progettino che stavo preparando, magari qualche guru lo corregge.
 

Attachments

  • PdfOpen.zip
    9.4 KB · Views: 172

Sagenut

Expert
Licensed User
Longtime User
Ho corretto l'esempio fornito da @Xfood.
Essendo una cosa nuova anche per me ho avuto un pò da fare.
L'esempio prevede che il tuo PDF che ci hai indicato sia nella cartella DOWNLOAD del tuo dispositivo.
Da Android 10 non si può più accedere alla File.DirRootExternal liberamente, nemmeno con i permessi.
Per ora c'è una soluzione, tramite aggiunta di codice nel Manifest, ma penso che presto ci toglieranno questa opzione.
LINK UTILI:
File Provider
Spiegazione modifiche in ogni versione di Android
Potrebbe esserci una versione migliore del codice che ho usato io, però almeno sembra funzionare. :p
 

Attachments

  • NEW PdfOpen.zip
    10.5 KB · Views: 212
Last edited:

Sagenut

Expert
Licensed User
Longtime User
@Sabotto
Hai fatto bene a segnalarlo ed è bene che lo notifichi anche io.
L'esempio che ho postato fà utilizzo di quella classe, File Provider.
L'ho riportato nei link ma è bene specificare che è necessaria allo scopo.
Infatti è presente all'interno del codice.
Probabilmente il suo utilizzo verrà esteso per accedere alla File.DirRootExternal da Android 10 in poi.
Non ringrazieremo mai abbastanza Google per le complicazioni che introducono ad ogni nuova versione, ma dicono essere in nome della Sicurezza dei nostri dati.
 

udg

Expert
Licensed User
Longtime User
ma dicono essere in nome della Sicurezza dei nostri dati.
Li stessi che vendono o distribuiscono a cani e porci senza ritegno? :)
 

Sagenut

Expert
Licensed User
Longtime User
Top