Afficher le PDF dans Android
Dans mon onCreate() je fais cette case:
//
//check if we have a PDF viewer, else bad things happen
//
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setType("application/pdf");
List<ResolveInfo> intents = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (intents == null || intents.size() == 0) {
//display message then...
finish();
}
Sur mon HTC Desire, ce n'est pas le retour d'un match, même si j'ai Adobe PDF viewer. Une réponse à cette question android: ouvrir un fichier pdf à partir de mon application en utilisant le haut de la visionneuse pdf mentionne que Adobe ne peut pas avoir tout public Intentions, de sorte que la vérification ci-dessus sera évidemment de retour rien.
Quelqu'un peut-il vérifier si vous devriez être en mesure de lancer Acrobat à partir d'une intention, ou est-il une autre méthode ou d'une visionneuse PDF pour l'utiliser.
Le réel de cas d'utilisation est de télécharger des copies de factures et de les stocker sur le stockage local, à l'aide d'un code tel que:
URL url = new URL(data);
InputStream myInput = url.openConnection().getInputStream();
FileOutputStream fos = openFileOutput(fname, Context.MODE_WORLD_READABLE);
//transfer bytes from the input file to the output file
byte[] buffer = new byte[8192];
int length;
while ((length = myInput.read(buffer)) > 0) {
fos.write(buffer, 0, length);
progressDialog.setProgress(i++);
}
fos.close();
et puis pour montrer
//read from disk, and call intent
openFileInput(fname); //will throw FileNotFoundException
File dir = getFilesDir(); //where files are stored
File file = new File(dir, fname); //new file with our name
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.fromFile(file));
intent.setType("application/pdf");
startActivity(intent);
OriginalL'auteur BJB | 2010-09-14
Vous devez vous connecter pour publier un commentaire.
Connectez votre téléphone à votre PC, lancez Eclipse et ouvrir le LogCat. Puis télécharger un fichier PDF dans le navigateur et ouvrez-le. Vous devriez voir une ligne du genre (j'ai utilisé le HTC desire):
09-14 17:45:58.152: INFO/ActivityManager(79): le Démarrage de l'activité: l'Intention { act=android.l'intention.d'action.VUE dat=file:///sdcard/download/nom de fichier.pdf type=application/pdf flg=0x4000000 cmp=com.htc.pdfreader/.ActPDFReader }
Avoir un aller avec une intention explicite en utilisant le composant de l'information. Docs disent ici:
Inconvénient est que vous serez lié à la htc lecteur. Mais vous pouvez essayer une intention implicite premier et si cela échoue, essayez l'intention explicite comme une solution de repli.
OriginalL'auteur PaulF
-Copier le code suivant dans votre activité. Appel de la fonction CopyReadAssets("Nom_fichier.pdf") de fonction onCreate (). Placez le File_name.fichier pdf dans le dossier des actifs.
OriginalL'auteur Shirish Singh