邮件附件没有正确的内容类型



我想让我的Android应用程序可以通过各种方式(邮件,蓝牙等)将文件从一台设备发送到另一台设备。

我的第一个用例是电子邮件。这是我用来生成SEND意图的代码。

            Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.setType("text/xml");
            shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
            startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.share_list)));

当我在模拟器(Android 2.1)上运行此命令时,结果邮件的附件部分如下:

Content-Type: ;

然而,当我在我的Galaxy Nexus (Android 4.2.2)上运行它时,附件部分是:

Content-Type: application/tpl;

这可能是因为传递的URI以.tpl结尾。

这是我所期望的:

Content-Type: text/xml;

我错过了什么吗?重要的是,邮件附件具有正确的MIME类型,这样我就可以为应用程序的接收端使用意图过滤器。

我想你指的是Web内容类型,

您应该在您的案例(电子邮件/消息)中使用此类型i.setType("message/rfc822");

看这篇文章

这段代码适用于什么应用程序…因为什么应用程序需要比数据更多的细节,所以这是交易

                               Intent waIntent = new Intent(Intent.ACTION_SEND);
                               waIntent.setType("text/plain");
                               waIntent.setPackage("com.whatsapp");
                               waIntent.setType("image/*");
                               waIntent.putExtra(Intent.EXTRA_TEXT, INFO);
                               waIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(file_PATH)));

                               startActivity(Intent.createChooser(waIntent, "Share with Whatsapp"));
                 for other such as gmail or any mail - just remove the package and set type whatever you like an iamge or file or anything that it supports,for bluetooth it works too...and for whats app i shared the code with you.

希望对你有所帮助

我有一些建议。

  1. 使用setData代替putExtra。或者你已经在其他地方使用了setData ?在任何情况下,设置完数据后再设置mime类型。来自setdata文档:"设置这个意图正在操作的数据。此方法自动清除先前由setType(String)或setTypeAndNormalize(String)设置的任何类型。" http://developer.android.com/reference/android/content/Intent.html#setData(android.net.Uri)

  2. 在之后使用setType 当您使用putExtra时,可能会(错误地)从数据推断mime类型,覆盖您刚刚设置的mime类型。

  3. 使用setDataAndType(Uri数据,字符串类型)。文档说你应该很少使用它,因为mime类型应该从数据中推断出来,但如果这对你不起作用,你仍然可以尝试这个。来自文档:"这个方法应该很少使用——它允许你用你自己的类型覆盖通常从数据中推断出来的MIME类型。"http://developer.android.com/reference/android/content/Intent.html#setDataAndType(android.net.Uri,%20java.lang.String)

编辑:上面的建议是为了设置正确的内容类型,而不是为了让电子邮件应用只出现在应用选择对话框中。在Android中,没有正确的方法让应用程序选择对话框中只有电子邮件应用程序。你的应用可以而且应该只指定你想要发送的内容类型,其他应用可以指定它们是否可以发送你的内容类型。这可以是一个电子邮件应用,也可以是"what's app"。为什么要限制用户只能将文件发送到电子邮件应用程序呢?如果你想将文件发送到一个特定的电子邮件地址,那就不同了,那么你应该在Intent上设置收件人的电子邮件地址;然后,只有电子邮件应用程序将显示在应用程序选择器对话框中。

相关内容

  • 没有找到相关文章

最新更新