Maison >Java >javaDidacticiel >Pourquoi mon application Android génère-t-elle une erreur « Le chemin du fichier n'est pas valide » lorsque j'essaie de lire un PDF à partir du dossier des ressources ?

Pourquoi mon application Android génère-t-elle une erreur « Le chemin du fichier n'est pas valide » lorsque j'essaie de lire un PDF à partir du dossier des ressources ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 09:48:29858parcourir

Why is my Android app throwing a

Lire un fichier PDF à partir du dossier Assets

Problème :

Dans une application Android, tente de lire un fichier PDF à partir du dossier d'actifs à l'aide du code fourni, ce qui entraîne le message d'erreur "Le chemin du fichier n'est pas valide."

Code :

Le correspondant La section de code est la suivante :

<code class="java">File file = new File("android.resource://com.project.datastructure/assets/abc.pdf");

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
startActivity(intent);</code>

Solution :

Le problème réside dans le chemin fourni à l'objet File. Le chemin correct doit récupérer le fichier PDF du dossier Assets à l'aide de getAssets().

<code class="java">AssetManager assetManager = getAssets();
InputStream in = assetManager.open("abc.pdf");
OutputStream out = openFileOutput("abc.pdf", Context.MODE_WORLD_READABLE);

// Copy PDF file to internal storage
copyFile(in, out);

// Create Intent and URI for file in internal storage
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + getFilesDir() + "/abc.pdf"), "application/pdf");

startActivity(intent);</code>

Notes supplémentaires :

  • N'oubliez pas d'ajouter l'autorisation WRITE_EXTERNAL_STORAGE sur le fichier manifeste.
  • La méthode copyFile() est utilisée pour copier le fichier PDF du dossier d'actifs vers le stockage interne, le rendant accessible par l'intention.
  • L'URI est construit en utilisant Uri.parse() pour pointer vers l'emplacement du fichier dans la mémoire interne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn