我正在尝试使用 Intents 打开任何任意文件。但是,对于安装了可以打开它们的应用程序的文件类型,我得到了 ActivityNotFoundException。在下面的源代码中,当file
指向 PNG 文件时,我得到“使用完成操作”对话框。但是,当我尝试打开 mp3 时,出现异常。当我打开 Astro 并单击同一个 mp3 文件时,我会看到“使用完成操作”对话框,显示已安装的 MP3 播放器。如何从我的代码中显示相同的对话框?当我从调试器检查文件位置、扩展名和 MIME 类型时,它们看起来都是正确的。
String url = file.toURL().toString();
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
String type = typeMap.getMimeTypeFromExtension(extension);
mimeType.setText(type);
boolean fileExists = file.exists();
Intent viewIntent = new Intent(Intent.ACTION_VIEW);
viewIntent.setData(Uri.fromFile(file));
viewIntent.setType(type);
MainActivity.this.startActivity(viewIntent);
答案是,Intent.setType
并且Intent.setData
是相互排斥的。呼叫一个清除另一个。所以打电话setDataAndType
是解决办法。