我搜索了很多寻找解决方案,但仍然找不到任何
我正在尝试在我的Android应用程序中打开PDF文件
以下是我的代码:
try
{
File file = new File(Environment.getExternalStorageDirectory()+"/pdf/Read.pdf");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(file);
Log.d("CheckingURI", uri.toString());
intent.setDataAndType(uri, "application/pdf");
startActivity(intent);
}
catch (Exception e)
{
Log.d("OpenPDFError", e.getMessage());
}
Tomcat日志意味着没有活动来处理意图
09-19 19:55:02.938: D/CheckingURI(30483): file:///mnt/sdcard/pdf/Read.pdf
09-19 19:55:02.948: D/OpenPDFError(30483): No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///mnt/sdcard/pdf/Read.pdf typ=application/pdf }
还有其他方法可以执行此操作,还是可以使用其他默认PDF查看器打开PDF文件?如果有,怎么样?
更新 主要问题是我没有在我的模拟器上安装PDF查看器应用程序...
答案 0 :(得分:7)
请改为尝试:
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/pdf/Read.pdf");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
CAVEAT:只有预先安装的PDF查看器才能使用上述方法。如果没有,则需要安装PDF查看器。
答案 1 :(得分:2)
如果没有找到启动PDF的活动,您只需向用户弹出某种错误消息(在错误对话框中,您可以让用户知道他需要一些PDF应用并将他发送到Play商店),虽然我建议使用这段代码而不是你正在使用的一般异常捕手:
try {
/* your code */
...
} catch (ActivityNotFoundException e) {
e.printStackTrace();
}
或者您可以使用某些PDF库,例如 this one 。