0

我正在尝试从设备的内部存储器中读取 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 阅读器显示错误 - 不支持文件 - 或找不到文件。但我已经检查过该文件是否在此位置。我还更改了文件的权限,但结果仍然相同。有人可以帮我检测并解决我的问题吗?

4

3 回答 3

0
data/data/com.myapp.main/app_c"+md+"/c"+md+".pdf"

这条路正确吗?

我猜路径应该如下所示。

data/data/com/myapp/main/app_c"+md+"/c"+md+".pdf"
于 2012-04-25T06:12:51.943 回答
0

您可以使用 PDFBox 库从 pdf 中读取数据 -

http://pdfbox.apache.org/

于 2012-04-25T06:05:04.590 回答
0

您应该使用其中一个 api 来获取应用程序的文件目录,而不是假设路径是什么。

但是,您的实际问题很可能是您在那里创建的任何文件都可能是拥有应用程序的私有文件,因此 PDF 阅读器应用程序缺乏访问它的权限。

解决方案是将文件模式更改为全球可读,或者更常见的是将文件放在外部存储(即“sdcard”)而不是内部存储器上,因为它(迄今为止)没有概念权限。尽管值得记住的是,不能保证设备具有外部存储,或者即使存在,也不能保证在任何给定时间点都可以访问它。

于 2012-04-25T06:17:45.823 回答