Pengenalan
Artikel ini menyediakan penyelesaian kepada isu yang cuba dibuka fail PDF daripada folder aset menggunakan niat menghasilkan mesej ralat "Laluan fail tidak sah".
Perihalan Masalah
Kod asal cuba mengakses fail PDF dalam folder aset menggunakan laluan berikut:
<code class="java">File file = new File("android.resource://com.project.datastructure/assets/abc.pdf");</code>
Walau bagaimanapun, laluan ini tidak betul, kerana ia tidak mengambil kira lokasi sebenar fail PDF dalam struktur direktori apl.
Penyelesaian
Untuk menyelesaikan isu ini, kami boleh menggunakan kod dikemas kini berikut:
<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>
Kod ini mula-mula menyalin fail PDF daripada folder aset ke direktori storan peribadi apl, menggunakan FileOutputStream untuk memastikan ia boleh diakses oleh aplikasi lain. Ia kemudian mencipta Niat untuk membuka fail PDF daripada direktori storan peribadi, yang menyelesaikan isu laluan fail yang tidak sah.
Kebenaran
Untuk menyalin fail ke direktori storan peribadi, adalah perlu untuk memasukkan kebenaran berikut dalam fail AndroidManifest.xml:
<code class="xml"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /></code>
Atas ialah kandungan terperinci Bagaimana untuk membuka fail PDF daripada folder aset dalam Android dan mengelakkan ralat \'Laluan fail tidak sah\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!