Heim  >  Artikel  >  Java  >  Wie lese ich eine PDF-Datei aus dem Assets-Ordner in einer Android-Anwendung richtig?

Wie lese ich eine PDF-Datei aus dem Assets-Ordner in einer Android-Anwendung richtig?

DDD
DDDOriginal
2024-10-31 15:11:02409Durchsuche

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

Eine PDF-Datei aus einem Assets-Ordner lesen

Das Lesen einer PDF-Datei aus einem Assets-Ordner in einer Android-Anwendung erfordert einige spezifische Schritte.

Im Wenn Sie den bereitgestellten Code verwenden, tritt ein Problem mit dem für die Datei „abc.pdf“ angegebenen Dateipfad auf. Der verwendete Pfad „android.resource://com.project.datastructure/assets/abc.pdf“ ist falsch.

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  1. Kopieren Sie die Datei „abc.pdf“ in den internen Speicher der Anwendung: Verwenden Sie die Methode CopyReadAssets(), um die Datei aus dem Assets-Ordner in den internen Speicher zu kopieren. Dadurch wird sichergestellt, dass die Anwendung auf die Datei zugreifen kann.
  2. Geben Sie den korrekten Dateipfad an:Verwenden Sie anstelle des Assets-Ordnerpfads den Dateipfad im internen Speicher der Anwendung Uri.fromFile(file), wobei file das Dateiobjekt ist, das die kopierte PDF-Datei darstellt.
  3. Legen Sie die richtigen Berechtigungen fest: Stellen Sie sicher, dass Sie die Berechtigung WRITE_EXTERNAL_STORAGE in die Datei AndroidManifest.xml der Anwendung aufnehmen damit die Anwendung in den internen Speicher schreiben kann.

Hier ist der aktualisierte Code mit den erforderlichen Änderungen:

<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>

Dieser aktualisierte Code kopiert die Datei „abc.pdf“ korrekt. Kopieren Sie die Datei in den internen Speicher der Anwendung und verwenden Sie den richtigen Dateipfad, um die PDF-Datei in einem PDF-Viewer eines Drittanbieters zu öffnen.

Das obige ist der detaillierte Inhalt vonWie lese ich eine PDF-Datei aus dem Assets-Ordner in einer Android-Anwendung richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn