And*_*era 26 android android-intent
当我们需要在Android中发送电子邮件时,我们将使用如下的Intent.ACTION_SEND调用已注册的电子邮件应用程序
Intent i = new Intent(Intent.ACTION_SEND);
startActivity(Intent.createChooser(i, "Send mail..."));
Run Code Online (Sandbox Code Playgroud)
我怀疑为什么我们需要在startActivity中使用Intent.createChooser而不是使用
startActivty(i)
.使用有什么具体原因Intent.createChooser()
吗?
Eup*_*rie 28
AFAIK,如果使用Intent.createChooser
,有三个不同之处:
您可以指定选择器对话框的标题以使其更清晰.
即使用户选择了默认选项,系统也将始终显示选择器对话框.
如果您创建的意图Intent.createChooser
与任何活动都不匹配,系统仍将显示包含指定标题和错误消息的对话框No application can perform this action
.或者对于正常意图,您可能会遇到Android运行时错误:Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent
War*_*ith 10
选择器使用户能够选择除默认值之外的其他邮件应用程序.如果您使用普通的gmail(privat)和电子邮件(与工作相关)并且您想要选择要采用的那个,它非常有用.
应该总是用...
路老消息,但对于其他人谁遇到它,你可以设置在意向到MIME类型的电子邮件,这将至少其限制到可以发送相应类型的消息应用程序的类型:
Intent i = new Intent(Intent.ACTION_SEND);
i.setType( "message/rfc822");
startActivity(Intent.createChooser(i, "Send mail..."));
Run Code Online (Sandbox Code Playgroud)
使选择器对话框更清晰.
如果您不使用createChooser()
,系统仍将显示选择器对话框,除非用户已经表明他们决定使用哪个已安装的程序用于给定任务(或者他们已经撤回了他们之前的决定).
如果使用createChooser()
,系统将始终显示对话框,即使已经有明确的偏好.
所以,两者都是绝对正确的,你必须决定在任何给定的情况下使用哪一个.您的里程可能会有所不同,但基本上,如果您提供文本,图像,视频或类似内容的格式进行显示或编辑,您可能希望省略,createChooser()
以便用户已经喜欢的内容可以立即开始.另一方面,如果你想分享一些你期望用户使用不同的已安装程序(例如,发送电子邮件,Facebook,聊天等)来处理的东西,你可能想要用createChooser()
它来简化供您的用户即时选择.
归档时间: |
|
查看次数: |
38189 次 |
最近记录: |