我正在下载pdf到内部存储,但我的pdf查看器找不到它们

时间:2014-11-22 17:54:58

标签: android file directory-structure

我将pdf文件下载到内部存储,然后以编程方式创建将其带到操作视图的按钮。我可以列出文件[]和Toast他们在那里,但pdf查看器说文件不存在或文件无法查看。

这些是下载期间写入内部存储的主要组件。

private File file;
file = new File(mContext.getFilesDir(), filename+".pdf");
// Output stream to write file in internal storage
                    OutputStream output = new BufferedOutputStream(new FileOutputStream(file));

然后在另一个活动中,我从数据库中获取文件名并创建一个带按钮的表

// ....Inside a for loop ..... 
Button c3 = new Button(this);
        c3.setText("view");
        c3.setId(p.getPosterID());
        c3.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                File pdfFile = getBaseContext().getFileStreamPath(filename+".pdf");
                if (pdfFile.exists()){
                    Uri path = Uri.fromFile(pdfFile);
 //================================================================================
                    Log.d("path: ", path.toString());
    //this will log: file:///data/data/com.myapp.posterviewer/files/5453b54b83b5f.pdf
 //================================================================================
                    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(ListPosters.this, "No Application Available", Toast.LENGTH_LONG).show();
                    }
                }
                else{
                    Toast.makeText(ListPosters.this, "The file does not exist", Toast.LENGTH_LONG).show();
                }
            }
        });

我是否使用Uri路径生成正确的路径? 我也无法在app文件夹中看到来自Windows资源管理器的文件。 但是我的所有检查都说文件存在,我认为它会在app根文件夹中。

1 个答案:

答案 0 :(得分:0)

内部存储仅对您的应用程序可见。 OutSide应用程序(Pdf Viewer)无法访问它。将Pdf文件保存在外部存储器中,然后通过Pdf Viewer

打开它