2011-12-16 5 views
5

Voglio aprire un PDF archiviato nella memoria interna del telefono ... sto provando a passare il percorso del file verso l'Uri ... ma continua mostrandomi questo errore "il percorso del file non è valido" ma sono sicuro che sto mettendo la strada giusta ..Leggere il pdf memorizzato nella memoria interna (Il percorso del file non è valido)

targetFile=new File("/data/data/package Name/app_mydir/test.pdf"); 

      } 

     Intent intent; 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(targetFile), "application/pdf"); 


       startActivity(intent); 
+0

Come viene salvato il file? Generalmente i file di dati finiscono all'interno di una cartella denominata "file" nella directory dell'app, non nella radice. – FoamyGuy

+0

sto usando questa directory = getBaseContext(). GetDir ("mydir", Context.MODE_PRIVATE); \t \t \t} \t \t file file1 = new File (directory, PdfName); – Reham

+0

sostituire "getBaseContext()" con "YourActivityName.this" Inoltre probabilmente non si sarà in grado di utilizzare MODE_PRIVATE se si sta tentando di passare il file ad un'altra applicazione. – FoamyGuy

risposta

0

controllare l'output di

targetFile.exists();

Se questo restituisce true allora si sono buoni per andare altrimenti qualcosa non va con il vostro percorso.

+0

l'ho provato .. ritorna vero..non so cosa sia sbagliato con il percorso .. – Reham

+0

Probabilmente dovresti pubblicare uno stacktrace completo. –

8

file nella directory di archiviazione interna della vostra applicazione sono per default privato per la vostra applicazione. Il che significa che nessuna app PDF-Reader può leggere quel file (poiché non viene eseguito con il pid delle tue app - non viene fornita alcuna autorizzazione di lettura).

È necessario salvare quel PDF con autorizzazioni di lettura esplicite per altre app utilizzando il flag Context.MODE_WORLD_READABLE. Vedi lo data storage documentation come farlo esattamente.

uso anche Context.openFileOutput() e Context.openFileInput() per leggere e scrivere file nella directory interna (come indicato nella documentazione di cui sopra). Non i percorsi hardcode come questo, potrebbero cambiare.