Rumah > Java > javaTutorial > teks badan

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

Linda Hamilton
Lepaskan: 2024-11-03 04:31:30
asal
457 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan