首页  >  文章  >  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