我正在尝试从我的代码在此处的设备的内部存储器中读取pdf文件:
File pdfFile;
pdfFile=new File("data/data/com.myapp.main/app_c"+md+"/c"+md+".pdf");
if(pdfFile.exists())
{
try{
FileOutputStream fileOutput = openFileOutput(pdfFile.toString(), Context.MODE_WORLD_READABLE);
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
Uri path = Uri.fromFile(pdfFile);
Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(path, "application/pdf");
pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try
{
startActivity(pdfIntent);
}
catch(ActivityNotFoundException e)
{
Toast.makeText(ChTable.this, "No Application available to view pdf", Toast.LENGTH_LONG).show();
}
但Pdf阅读器显示错误 - 文件不受支持 - 或文件未找到。但我已检查该文件是否在此位置。我还更改了文件的权限,但结果仍然相同。有人会帮我发现并解决我的问题吗?
答案 0 :(得分:0)
您可以使用PDFBox库从pdf中读取数据 -
答案 1 :(得分:0)
data/data/com.myapp.main/app_c"+md+"/c"+md+".pdf"
此路径是否正确?
我猜测路径应该如下所示。
data/data/com/myapp/main/app_c"+md+"/c"+md+".pdf"
答案 2 :(得分:0)
您应该使用其中一个api来获取应用程序的文件目录,而不是假设路径是什么。
然而,您的实际问题很可能是您在此处创建的任何文件可能都是拥有应用程序的私有文件,因此PDF阅读器应用程序缺少访问它的权限。
解决方法是将文件模式更改为全局可读,或者更常见的是将文件更改为外部存储(即“sdcard”)而不是内部存储器,因为它(迄今为止)没有权限的概念。虽然值得记住,设备不能保证有外部存储,或者在任何给定的时间点都可以访问它,即使它存在。