Rumah >Java >javaTutorial >Bagaimana untuk membuka fail PDF daripada folder aset dalam Android dan mengelakkan ralat \'Laluan fail tidak sah\'?

Bagaimana untuk membuka fail PDF daripada folder aset dalam Android dan mengelakkan ralat \'Laluan fail tidak sah\'?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 04:31:30535semak imbas

How to open a PDF file from the assets folder in Android and avoid the

Membaca Fail PDF dari Folder Aset

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!

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