我已经查看了所有类似的问题,但我无法明白我做错了什么。
我编写了一个应用程序,尝试启动各种文件,类似于文件浏览器。 当单击文件时,它会根据其关联的MIME类型尝试启动程序,或呈现“选择要启动的应用程序”对话框。
这是我用来启动的代码:
我编写了一个应用程序,尝试启动各种文件,类似于文件浏览器。 当单击文件时,它会根据其关联的MIME类型尝试启动程序,或呈现“选择要启动的应用程序”对话框。
这是我用来启动的代码:
File file = new File(app.mediaPath() + "/" +_mediaFiles.get(position));
Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
myIntent.setDataAndType(Uri.fromFile(file),mimetype);
startActivity(myIntent);
以下代码执行失败并生成错误:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///file:/mnt/sdcard/roms/nes/Baseball_simulator.nes }
现在,如果我安装OI文件管理器,它会打开而不是抛出此错误,然后如果我从其中单击同一文件,则会启动适当的对话框。
我注意到该特定文件的MIME类型失败了,但其他MIME类型(如.zip
)返回值。
当MIME类型为null时,我是否遗漏了调用允许用户选择的对话框的某些内容?
我尝试了其他启动应用程序的变体,包括不设置MIME类型并仅使用.setData
,但没有成功。
我希望发生的操作是:用户点击一个文件,如果它与一个应用程序相关联,那么该应用程序将启动,如果没有,用户将获得“使用下列应用程序完成操作”的对话框,其中列出了应用程序列表。
感谢您的任何建议。