Gan*_*y C 28 email android android-intent
我正在Intent.ACTION_SEND
发送电子邮件.但是,当我打电话时,intent
它显示选择发送消息,发送电子邮件,以及通过蓝牙发送.我希望它只显示发送电子邮件的选择.我怎样才能做到这一点?
N-J*_*JOY 23
Intent email = new Intent(android.content.Intent.ACTION_SEND);
email.setType("application/octet-stream");
Run Code Online (Sandbox Code Playgroud)
编辑:
你也可以尝试设置类型"message/rfc822"
.
试试这个....
too*_*o42 23
我不赞成这个答案,但我相信它给出了这篇文章的最佳答案.
使用text/plain或text/html是一种常见的误解.这将触发任何可以处理普通或HTML文本文件而无任何上下文的应用程序,包括Google Drive,Dropbox,Evernote和Skype.
而是使用a ACTION_SENDTO
,提供mailto:
Uri
intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"));
Run Code Online (Sandbox Code Playgroud)
然后,您可以按照其他答案的建议继续使用选择器.
由@PaulLammertsma在这里安排 Android电子邮件选择器
ARL*_*abs 20
[API LEVEL> = 15的解决方案]
我终于成功发送电子邮件附件只给电子邮件客户端.我在这里写,因为它花了我很多时间,对其他人可能有用.
问题是:
Intent.ACTION_SENDTO采用数据URI(因此您可以指定"mailto:"模式)但它不接受Intent:EXTRA_STREAM.
Intent.ACTION_SEND接受Intent:EXTRA_STREAM(因此您可以添加附件)但它只接受Type(不是Data URI,因此您不能指定"mailto:"模式).
因此Intent.ACTION_SEND允许用户从多个活动中进行选择,即使你设置了类型("message/rfc822"),因为该应用程序/活动可以管理所有文件类型(简单的GDrive/Dropbox应用程序),甚至是电子邮件消息文件.
解决方案是在setSelector方法中.使用此方法,您可以使用Intent.ACTION_SENDTO选择Activity,但随后发送Intent.ACTION_SEND Intent.
这里是我的解决方案代码(附件来自FileProvider,但它可以是任何文件):
{
Intent emailSelectorIntent = new Intent(Intent.ACTION_SENDTO);
emailSelectorIntent.setData(Uri.parse("mailto:"));
final Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"address@mail.com"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
emailIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
emailIntent.setSelector( emailSelectorIntent );
Uri attachment = FileProvider.getUriForFile(this, "my_fileprovider", myFile);
emailIntent.putExtra(Intent.EXTRA_STREAM, attachment);
if( emailIntent.resolveActivity(getPackageManager()) != null )
startActivity(emailIntent);
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*lva 19
@Ganapathy:尝试使用此代码显示gmail
Intent gmail = new Intent(Intent.ACTION_VIEW);
gmail.setClassName("com.google.android.gm","com.google.android.gm.ComposeActivityGmail");
gmail.putExtra(Intent.EXTRA_EMAIL, new String[] { "jckdsilva@gmail.com" });
gmail.setData(Uri.parse("jckdsilva@gmail.com"));
gmail.putExtra(Intent.EXTRA_SUBJECT, "enter something");
gmail.setType("plain/text");
gmail.putExtra(Intent.EXTRA_TEXT, "hi android jack!");
startActivity(gmail);
Run Code Online (Sandbox Code Playgroud)
Jig*_*ani 14
这会对你有所帮助.
On your button click :
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{"youremail@yahoo.com"});
email.putExtra(Intent.EXTRA_SUBJECT, "subject");
email.putExtra(Intent.EXTRA_TEXT, "message");
email.setType("message/rfc822");
startActivity(Intent.createChooser(email, "Choose an Email client :"));
Run Code Online (Sandbox Code Playgroud)
我的应用程序遇到了类似的问题.我最近发现这个链接形式的官方Android开发者网站真的有帮助! 共同意图:电子邮件
TL; DR:
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
Run Code Online (Sandbox Code Playgroud)
现在,您只会看到电子邮件客户端!
您可以通过执行以下操作添加主题和正文:
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "Body" );
Run Code Online (Sandbox Code Playgroud)
我注意到,这是一个相当古老的问题,但它是搜索“发送邮件”解决方案时的第一个结果,并且所有答案都有一个常见问题:
使用Intent.ACTION_SEND
和intent.setType("message/rfc822")
将产生一个选择器,它不仅显示邮件应用程序,而且显示所有可以通过 message/rfc822处理任何MIME 类型支持的应用程序,例如.mhtml
, .mht
, .mime
. 除了邮件应用程序,这可能是Google Drive、Dropbox、Evernote 等。
我发现将选择器限制为仅邮件应用程序的唯一解决方案是改用 Intent.ACTION_SENDTO:
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto","address@example.com", null));
intent.putExtra(Intent.EXTRA_SUBJECT, "My Mail");
intent.putExtra(Intent.EXTRA_TEXT , "My Message");
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MainActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
60441 次 |
最近记录: |