Maison  >  Article  >  Java  >  Comment lire correctement un fichier PDF depuis le dossier assets dans une application Android ?

Comment lire correctement un fichier PDF depuis le dossier assets dans une application Android ?

DDD
DDDoriginal
2024-10-31 15:11:02409parcourir

How to correctly read a PDF file from the assets folder in an Android application?

Lire un fichier PDF à partir du dossier d'actifs

La lecture d'un fichier PDF à partir d'un dossier d'actifs dans une application Android implique certaines étapes spécifiques.

Dans le code fourni, un problème survient avec le chemin de fichier spécifié pour le fichier "abc.pdf". Le chemin utilisé, "android.resource://com.project.datastructure/assets/abc.pdf", est incorrect.

Pour résoudre ce problème, suivez ces étapes :

  1. Copiez le fichier « abc.pdf » dans la mémoire interne de l'application : Utilisez la méthode CopyReadAssets() pour copier le fichier du dossier des ressources vers la mémoire interne. Cela garantit que le fichier est accessible par l'application.
  2. Spécifiez le chemin du fichier correct : Au lieu d'utiliser le chemin du dossier des ressources, utilisez le chemin du fichier dans la mémoire interne de l'application, qui serait Uri.fromFile(file), où file est l'objet File représentant le fichier PDF copié.
  3. Définissez les autorisations correctes : Assurez-vous d'inclure l'autorisation WRITE_EXTERNAL_STORAGE dans le fichier AndroidManifest.xml de l'application. pour permettre à l'application d'écrire sur la mémoire interne.

Voici le code mis à jour avec les modifications nécessaires :

<code class="java">public class SampleActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        CopyReadAssets();
    }

    private void CopyReadAssets() {
        AssetManager assetManager = getAssets();

        InputStream in = null;
        OutputStream out = null;
        File file = new File(getFilesDir(), "abc.pdf");
        try {
            in = assetManager.open("abc.pdf");
            out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE);

            copyFile(in, out);
            in.close();
            in = null;
            out.flush();
            out.close();
            out = null;
        } catch (Exception e) {
            Log.e("tag", e.getMessage());
        }

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

        startActivity(intent);
    }

    private void copyFile(InputStream in, OutputStream out) throws IOException {
        byte[] buffer = new byte[1024];
        int read;
        while ((read = in.read(buffer)) != -1) {
            out.write(buffer, 0, read);
        }
    }

}</code>

Ce code mis à jour copiera correctement le "abc.pdf" fichier dans le stockage interne de l'application et utilisez le chemin d'accès correct pour ouvrir le PDF dans une visionneuse PDF tierce.

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