如何打开从RES /原文件夹PDF文件?(How to open a PDF file from r

2019-08-03 03:18发布

我写这封信的时候,你点击一个按钮打开一个PDF文件的应用程序。 下面是我的代码:

File pdfFile = new File(
                        "android.resource://com.dave.pdfviewer/"
                                + R.raw.userguide);
                Uri path = Uri.fromFile(pdfFile);
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.setDataAndType(path, "application/pdf");

                startActivity(intent);

然而,当我运行它,然后按它说的按钮“的文件无法打开,因为它不是有效的PDF文档”。 这是推动我疯了。 我是否正确地访问文件? 有任何想法吗? 谢谢

Answer 1:

你必须从资产文件夹中的PDF复制到SD卡的文件夹。

.....
copyFile(this.getAssets().open("userguide.pdf"), new FileOutputStream(new File(getFilesDir(), "yourPath/userguide.pdf")));

File pdfFile = new File(getFilesDir(), "yourPath/userguide.pdf"); Uri path = Uri.fromFile(pdfFile);
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intent.setDataAndType(path, "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);
        }
    }


Answer 2:

您可以在Android上的文件夹资产插入您的PDF,然后尝试:

File pdfFile = new File(getAsset().open("userguide.pdf"));
                Uri path = Uri.fromFile(pdfFile);
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.setDataAndType(path, "application/pdf");

                startActivity(intent);

编辑:URI从文件夹中的资产是:文件:/// android_asset / RELATIVE_PATH然后来源将是:

File pdfFile = new File("file:///android_asset/userguide.pdf");
                    Uri path = Uri.fromFile(pdfFile);
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intent.setDataAndType(path, "application/pdf");

                    startActivity(intent);


文章来源: How to open a PDF file from res/raw Folder?