Maison > Java > javaDidacticiel > le corps du texte

Comment ouvrir un fichier PDF à partir du dossier Assets sous Android et éviter l'erreur « Le chemin du fichier n'est pas valide » ?

Linda Hamilton
Libérer: 2024-11-03 04:31:30
original
457 Les gens l'ont consulté

How to open a PDF file from the assets folder in Android and avoid the

Lecture d'un fichier PDF à partir du dossier Assets

Introduction

Cet article fournit une solution à un problème lors de la tentative d'ouverture un fichier PDF du dossier Assets utilisant une intention entraîne un message d'erreur « Le chemin du fichier n'est pas valide ».

Description du problème

Le code d'origine tente d'accéder un fichier PDF dans le dossier des ressources en utilisant le chemin suivant :

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

Cependant, ce chemin est incorrect, car il ne tient pas compte de l'emplacement réel du fichier PDF dans la structure de répertoires de l'application.

Solution

Pour résoudre ce problème, nous pouvons utiliser le code mis à jour suivant :

<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.parse("file://" + getFilesDir() + "/abc.pdf"),
                "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>
Copier après la connexion

Ce code copie d'abord le fichier PDF du dossier des ressources vers le répertoire de stockage privé de l'application, en utilisant un FileOutputStream pour garantir qu'il est accessible par d'autres applications. Il crée ensuite une intention d'ouvrir le fichier PDF à partir du répertoire de stockage privé, ce qui résout le problème du chemin de fichier non valide.

Autorisations

Pour copier des fichiers vers le répertoire de stockage privé, il est nécessaire d'inclure l'autorisation suivante dans le fichier AndroidManifest.xml :

<code class="xml"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /></code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal