我遇到了一个奇怪的情况。
我正在尝试使用以下代码发送带有多个附件的电子邮件。
Intent emailIntent = new Intent( android.content.Intent.ACTION_SEND_MULTIPLE );
// emailIntent.setType( "plain/text" );
emailIntent.setType( "application/octet-stream" );
...
....
emailIntent.putParcelableArrayListExtra( Intent.EXTRA_STREAM, uris );
这很好用,隐含意图机制显示了很多选项,如Gmail、Skype、Messaging等。
问题是默认邮件客户端不会出现在HTC Thunderbolt上(但可以在包括HTC Incredible S在内的其他设备上使用)。
如果我尝试使用Intent.ACTION_SEND
发送单个附件,则会显示默认的邮件客户端。我尝试过将内容类型设置为text/plain、application/octet流、message/rfc282等,但都不起作用。
我在这里错过了什么?
我遇到了同样的问题,我使用http Mime Library为多部分表单实体修复了它。
这是文件的链接。http://hc.apache.org/httpcomponents-client-4.3.x/httpmime/apidocs/org/apache/http/entity/mime/HttpMultipart.html
听起来像是Thunderbolt版本Sense中的一个bug。获胜的自定义UI,对吗?
不管怎样,我会查找什么应用程序在雷电上实际处理电子邮件,并放入if语句来检测设备是否是雷电。如果是,请将Intent的目标类设置为该类。如果不是,请执行您已经在执行的操作。
这对我来说很好,一定要指定消息类型,这就是android操作系统知道使用哪个广播的方式。
String email = "test@email.com";
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {email}); // could have multiple address
intent.putExtra(Intent.EXTRA_SUBJECT, "Enter your subject here");
intent.putExtra(Intent.EXTRA_TEXT, "message text as needed");
ArrayList<Uri> arrayUri = new ArrayList<Uri>();
arrayUri.add(Uri.parse("file://" + paths[0]));
arrayUri.add(Uri.parse("file://" + paths[1]));
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, arrayUri);
startActivity(Intent.createChooser(intent, "Any title to show on chooser"));
试试这个。我认为它会起作用。
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("plain/text");
ArrayList<Uri> uris = new ArrayList<Uri>();
String[] filePaths = new String[] {image1 Path,image2 path};
for (String file : filePaths) {
File fileIn = new File(file);
Uri u = Uri.fromFile(fileIn);
uris.add(u);
}
if ( !(app_preferences.getString("email", "") == null || app_preferences.getString("email", "").equals(""))) {
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {app_preferences.getString("email", "")});
}
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject name");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Please find the attachment.");
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(Intent.createChooser(emailIntent, "Email:"));