如何通过一个意图在Android中打开一个文件

我怎样才能打开一个以前存储在“私人”文件系统的文件? 该文件正在通过web服务下载,并应存储在本地FS。 尝试通过Intent(Action_View)打开文件时出现“奇怪”错误。 尽pipe该文件存在于文件系统中(在emulator / eclipse中的文件浏览器中看到该文件),但它将不会显示在启动的调用Galery活动中。 除了图片以外,屏幕上还显示一个黑屏(内容除了操作栏外)。 尝试通过这种方法打开PDF /电影/ MP3文件时,也会发生同样的情况(例如pdf说文件已损坏)。

顺便说一句:已存储在本地fs的数据是有效的(没有损坏),我从debugging器(通过拉方法)下载的文件,并可以打开我的工作站上的文件…

public void onAttachment(Context context, Attachment attachment) { try { //Attachment is a structured data object that contains of a byte[], filename and mimetype (like image/jpeg) FileOutputStream fos = FileOutputStream fos = context.openFileOutput(attachment.getAttachmentFileName(), Context.MODE_PRIVATE); fos.write(attachment.getBinary()); fos.flush(); fos.close(); File f = context.getFileStreamPath(attachment.getAttachmentFileName()); Uri uri = Uri.fromFile(f); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(uri,attachment.getAttachmentMimetype()); context.startActivity(intent); } catch (IOException e) { e.printStackTrace(); } } 

Solutions Collecting From Web of "如何通过一个意图在Android中打开一个文件"

你的代码中附件是什么types的? 也许它返回错误的MIMEtypes?

这段代码适用于我:

 File file = new File("EXAMPLE.JPG"); // Just example, you should parse file name for extension String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(".JPG"); Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), mime); startActivityForResult(intent, 10); 

你不能打开不在SD卡上的文件。 您需要将文件复制到SD卡然后打开它。

当设置位置为“ openFileOutput("fileName", Activity.MODE_WORLD_READABLE) ”它将工作。 其他应用程序无法读取设置为“ Context.MODE_PRIVATE ”时存储的数据(甚至用于查看)

请参阅stackoverflow上的其他post