Rumah  >  Artikel  >  Java  >  Mengapakah apl Android saya membuang ralat \"Laluan fail tidak sah\" semasa cuba membaca PDF daripada folder aset?

Mengapakah apl Android saya membuang ralat \"Laluan fail tidak sah\" semasa cuba membaca PDF daripada folder aset?

Patricia Arquette
Patricia Arquetteasal
2024-10-28 09:48:29750semak imbas

Why is my Android app throwing a

Baca Fail PDF daripada Folder Aset

Masalah:

Dalam aplikasi Android, cuba membaca fail PDF daripada folder aset menggunakan kod yang disediakan menghasilkan mesej ralat "Laluan fail tidak sah."

Kod:

Yang berkaitan bahagian kod adalah seperti berikut:

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

Penyelesaian:

Isunya terletak pada laluan yang disediakan kepada objek Fail. Laluan yang betul harus mendapatkan semula fail PDF daripada folder aset menggunakan 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>

Nota Tambahan:

  • Jangan lupa tambah kebenaran WRITE_EXTERNAL_STORAGE kepada fail manifes.
  • Kaedah copyFile() digunakan untuk menyalin fail PDF daripada folder aset ke storan dalaman, menjadikannya boleh diakses oleh Niat.
  • URI ialah dibina menggunakan Uri.parse() untuk menunjuk ke lokasi fail dalam storan dalaman.

Atas ialah kandungan terperinci Mengapakah apl Android saya membuang ralat \"Laluan fail tidak sah\" semasa cuba membaca PDF daripada folder aset?. 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