以编程方式在android中打开.msg文件(Outlook项目文件)

以编程方式在android中打开.msg文件(Outlook项目文件),android,outlook,Android,Outlook,我正试图通过我的应用程序打开一个.MSG文件。我尝试将MIMETYPE设置为vnd.ms outlook,但仍无法按预期打开.MSG文件,然后尝试在电子邮件中附加相同的.MSG并在设备中打开。它像一个符咒一样打开了 因此,我的问题是,如何在应用程序中以编程方式在android中打开.MSG文件 尝试了以下方法, 方法1:手动设置MIMETYPE mimetype = "application/vnd.ms-outlook"; 方法2:通过MimeTypeMap String extension

我正试图通过我的应用程序打开一个.MSG文件。我尝试将MIMETYPE设置为
vnd.ms outlook
,但仍无法按预期打开.MSG文件,然后尝试在电子邮件中附加相同的.MSG并在设备中打开。它像一个符咒一样打开了

因此,我的问题是,如何在应用程序中以编程方式在android中打开.MSG文件

尝试了以下方法,

方法1:手动设置MIMETYPE

mimetype = "application/vnd.ms-outlook";
方法2:通过
MimeTypeMap

String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); // extension is msg
通过另一个已安装的应用程序打开.MSG文件

Log.i(TAG, "Extension :" + extension + "\n" + "MIME :" + mimetype); // Prints msg for extension and mimetype = application/vnd.ms-outlook for method 1 and null when i use method 2
intent.setDataAndType(Uri.fromFile(file),mimetype);
startActivity(intent);
方法2中的mimetype结果为null,而mimetype集也显式不起作用

有谁能分享一下他们对解决这个问题的想法吗


谢谢。

您应该使用其他应用程序打开文件。试试这个:

Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(msgURI, mimeTypeString);
startActivity(i);

这应该允许任何在其清单中注册了MSG数据类型的应用程序打开它。

我的“打开”是什么意思?您正在尝试在应用程序中解析它,还是将其发送到其他应用程序?您好,我正在尝试通过另一个支持打开.MSG文件(例如office suite)的应用程序打开它。当我尝试使用电子邮件中附带的并通过office suite在设备中打开的相同.MSG文件时。它被打开了。与我尝试打开的方式相同。您可能希望发布实际“打开”文件的代码。你已经发布了关于mimetype的东西,但是没有发布关于实际开幕式的内容。这是我也使用过的方式。但它仍然无法打开已安装的应用程序。抛出ActivityNotFoundException。仅供参考,我已经更新了代码(包括实际“打开”文件的代码),我将尝试查找一个允许您查看其他应用程序清单的应用程序。这里有一个非常有效的方法:。找到办公套件,看看它能接受什么。这会让你很好地了解你的意图的数据类型需要放什么。非常感谢。我将尝试使用它并发表我的评论。再次感谢你,朋友。我理解这个问题。您需要找出哪些“Office Suite”接受作为意图数据类型,并基于此构建您的意图。另一个选项是找到打开它的活动并显式调用它。这很糟糕,因为不是每个人都有这个应用程序,用户可能想使用不同的应用程序。