2012-08-24 46 views
0

这里是我的代码Intent.ACTION_VIEW识别每一个文件为PDF

  Uri fileUri = Uri.fromFile(file); 
      Intent intent = new Intent(); 
      intent.setAction(Intent.ACTION_VIEW); 
      intent.setData(fileUri); 
      startActivity(intent); 

所以,它会打开我我的应用程序中指定的文件。我测试的前几个文件是--PDF,它工作得很好。而现在,我知道它是完整的疯狂,每一次我什么都不选,从PDF不同的时间 - 这显然是试图使用程序的PDF文件打开选择文件,并给了我这个消息

The document cannot be opened because it is not a valid PDF document 

有趣的事情:)有什么想法发生了什么?

回答

1

使用Intent.setType设置您尝试打开的每个文件的mimetype。因此,只有可以处理特定MIME类型的应用才会被打开

编辑:您可以使用MimeTypeMap.getMimeTypeFromExtension来获取文件的Mime类型。

+0

谁知道什么文件我会打开下一个?我认为这个Intent.ACTION_VIEW应该照顾它,我错了吗? – Dennis

+0

ACTION_VIEW只会查找为该过滤器注册的任何活动。另见我的编辑 – nandeesh

+0

以及,谢谢,最初的问题已解决:)现在我有另一个,但它是洞不同的故事)) – Dennis

0

尝试明确指定要打开。例如类型的类型

Intent intent = new Intent(); 
Uri path = Uri.fromFile(filename); 
intent.setDataAndType(path, "application/pdf"); 
startActivity(intent); 

,或者如果由于某种原因,你想通过电子邮件发送的PDF格式,你可以做

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
emailIntent.setType("application/pdf"); 
emailIntent.putExtra(Intent.EXTRA_STREAM, uri); 
startActivity(Intent.createChooser(emailIntent, "Send email using:"));