Rumah >Java >javaTutorial >Bagaimana untuk Membaca Fail PDF daripada Folder Aset dalam Apl Android?
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:
@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
Pertimbangan Tambahan
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!