簡介
本文提供了嘗試打開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中文網其他相關文章!