首頁  >  文章  >  Java  >  如何從 Android 中的資源資料夾中開啟 PDF 檔案並避免「檔案路徑無效」錯誤?

如何從 Android 中的資源資料夾中開啟 PDF 檔案並避免「檔案路徑無效」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-11-03 04:31:30418瀏覽

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

從資源資料夾讀取PDF 文件

簡介

本文提供了嘗試打開PDF 文件的問題的解決方案使用意圖從資產資料夾中取得PDF 檔案會導致「檔案路徑無效」錯誤訊息。

問題描述

原始程式碼嘗試存取使用以下路徑在資產資料夾中建立PDF 檔案:

<code class="java">File file = new File("android.resource://com.project.datastructure/assets/abc.pdf");</code>

但是,此路徑不正確,因為它沒有說明PDF 檔案在應用程式目錄結構中的實際位置。

解決方案

要解決此問題,我們可以使用以下更新的程式碼:

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

此程式碼首先將資產資料夾中的PDF 檔案複製到應用程式的私人儲存目錄,使用FileOutputStream 確保它可以被其他應用程式存取。然後建立一個 Intent 從私有儲存目錄中開啟 PDF 文件,從而解決了文件路徑無效的問題。

權限

將檔案複製到私人儲存目錄,需要在AndroidManifest.xml檔案中包含以下權限:

<code class="xml"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /></code>

以上是如何從 Android 中的資源資料夾中開啟 PDF 檔案並避免「檔案路徑無效」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn