0

Android 新手,对使用 PDF 的难度感到惊讶。我想我已经编写了将 PDF 传递给 Adob​​e 等应用程序的代码,如果没有安装这样的应用程序,则会返回错误。

但是,无论我放入资产还是 res/raw ,targetName似乎都没有给出的文件路径。target我不在乎文件在哪里,只要应用程序可以读取并传递它。

谁能告诉我我必须执行什么巫术仪式才能在 Android 中打开 PDF?我想念 iOS PDFView。

public void openPdf(Context context, String targetName) {

File target = new File(targetName);

if (target.exists()) {
Uri targetUri = Uri.fromFile(target);
Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(targetUri, "application/pdf");
pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

try{
context.startActivity(pdfIntent);
}
catch (ActivityNotFoundException e) {
    Toast.makeText(this, "You must have a PDF reader installed to view this document.", Toast.LENGTH_SHORT).show();
}
}

else {
    Toast.makeText(this, "Die App ist kaput.", Toast.LENGTH_SHORT).show();
}

}
4

2 回答 2

0

但是,无论我将目标放在资产中还是 res/raw 中,targetName 给出的文件路径似乎都不起作用。

正确的。这相当于在拇指驱动器上有一个 PDF 文件,但没有插入计算机,然后抱怨您在 Windows 中“对使用 PDF 的难度感到惊讶”。

我不在乎文件在哪里,只要应用程序可以读取并传递它。

将其写入外部存储。或将其复制到内部存储用于FileProvider通过content:// Uri第三方应用程序提供服务。

于 2013-08-30T19:13:38.693 回答
0

要使用该意图,您需要将所有 pdf 文件存储在 SD 卡上,然后将 uri 赋予该 sd 卡上该 pdf 的意图。

例子:

Uri pdfUri = Uri.parse(pdfUriString);
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(pdfUri, "application/pdf");
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

如果您的项目资源文件夹中有 pdf,这将不起作用

于 2013-08-30T18:03:02.387 回答