Intent.ACTION_VIEW将每个文件识别为pdf

时间:2012-08-24 17:47:31

标签: android android-intent android-file

这是我的代码

            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

有趣的事:)任何想法是怎么回事?

2 个答案:

答案 0 :(得分:1)

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

编辑:您可以使用MimeTypeMap.getMimeTypeFromExtension获取文件的Mimetype。

答案 1 :(得分: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:"));