Rumah >Java >javaTutorial >Bagaimana untuk Membaca Fail PDF daripada Folder Aset dalam Apl Android?

Bagaimana untuk Membaca Fail PDF daripada Folder Aset dalam Apl Android?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-29 01:52:30330semak imbas

How to Read a PDF File from the Assets Folder in an Android App?

Baca Fail PDF daripada Folder Aset

Artikel ini menangani isu membaca fail PDF daripada folder aset dalam aplikasi Android. Pengguna yang cuba mengakses PDF menemui mesej ralat "Laluan fail tidak sah."

Analisis Kod

Kod yang disediakan mengambil semula fail PDF daripada folder aset . Walau bagaimanapun, laluan yang ditentukan untuk membuka PDF dalam Niat merujuk folder aset, yang mungkin menyebabkan masalah dengan kebenaran dan akses.

Penyelesaian

Untuk menyelesaikan isu ini, pertimbangkan kod berikut:

kelas awam SampleActivity melanjutkan Aktiviti {

@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();
        out.flush();
        out.close();
    } 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");

    //Grant permission to the user after confirming existence of the file
    if (file.exists()) {
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
        try {
            getApplicationContext().startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(this, "NO PDF Viewer", Toast.LENGTH_SHORT).show();
        }
    }
}

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);
    }
}

}

Penjelasan

  • Kod ini membaca fail PDF daripada folder aset ke dalam fail dalam storan dalaman apl.
  • Laluan dalam Niat kini dikemas kini untuk menghala ke fail dalam storan dalaman, memastikan kebenaran akses.
  • Pendekatan ini menghapuskan ralat "Laluan fail tidak sah".

Pertimbangan Tambahan

  • Pastikan kebenaran WRITE_EXTERNAL_STORAGE diberikan dalam fail manifes.
  • Pastikan fail PDF wujud di lokasi yang ditentukan dalam folder aset.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Fail PDF daripada Folder Aset dalam Apl Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn