我将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根文件夹中。
答案 0 :(得分:0)
内部存储仅对您的应用程序可见。 OutSide应用程序(Pdf Viewer)无法访问它。将Pdf文件保存在外部存储器中,然后通过Pdf Viewer
打开它