这甚至可以不调用特定的包?我发现了无数通过意向发送电子邮件的例子,但我没有发现简单地通过按钮按钮打开设备上的默认电子邮件客户端(最好在用户有多个客户端的情况下使用选择器对话框)。如何直接启动电子邮件客户端到收件箱视图?
回答
没有标准Intent
操作来打开“设备上的默认电子邮件客户端”的“收件箱视图”。
有没有我可以用来打开默认电子邮件客户端的标准意向操作? (即使它不是收件箱视图 - 只需触摸主屏幕上的图标启动应用程序就可以启动它) – wirbly 2010-08-15 23:21:27
@wirbly:不,对不起。 – CommonsWare 2010-08-16 04:20:44
好的,谢谢你的信息。看起来我正在调用一个特定的包。 – wirbly 2010-08-16 13:12:00
你可以从你的活动对象试试这个:
不一定会带你到收件箱直接,但它会打开电子邮件应用程序:
Intent intent = getPackageManager().getLaunchIntentForPackage("com.android.email");
startActivity(intent);
如果Android电子邮件客户端是默认的电子邮件程序(很少属于这种情况),那么这个方法就行得通。如果不是,则startActivity会引发异常。 – KPK 2012-02-07 02:38:40
即使它的默认应用程序它不会工作。我记得一些HTC手机有不同的电子邮件包命名,如“com.htc.android.email”。所以这不起作用 – 2012-02-07 18:33:45
没有默认/简单的方法来做这个。此代码为我工作。它打开一个选择器与所有电子邮件应用程序注册到设备,并直接到收件箱:
Intent emailIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:"));
PackageManager pm = getPackageManager();
List<ResolveInfo> resInfo = pm.queryIntentActivities(emailIntent, 0);
if (resInfo.size() > 0) {
ResolveInfo ri = resInfo.get(0);
// First create an intent with only the package name of the first registered email app
// and build a picked based on it
Intent intentChooser = pm.getLaunchIntentForPackage(ri.activityInfo.packageName);
Intent openInChooser =
Intent.createChooser(intentChooser,
getString(R.string.user_reg_email_client_chooser_title));
// Then create a list of LabeledIntent for the rest of the registered email apps
List<LabeledIntent> intentList = new ArrayList<LabeledIntent>();
for (int i = 1; i < resInfo.size(); i++) {
// Extract the label and repackage it in a LabeledIntent
ri = resInfo.get(i);
String packageName = ri.activityInfo.packageName;
Intent intent = pm.getLaunchIntentForPackage(packageName);
intentList.add(new LabeledIntent(intent, packageName, ri.loadLabel(pm), ri.icon));
}
LabeledIntent[] extraIntents = intentList.toArray(new LabeledIntent[intentList.size()]);
// Add the rest of the email apps to the picker selection
openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents);
startActivity(openInChooser);
}
最初这看起来像非常可怕的代码,但它仍然工作!我为没有安装邮件客户端的手机添加了一个else语句。 – user1354603 2015-02-09 10:41:37
此代码是我发现的唯一解决方案,我发现它可以帮助我打开电子邮件收件箱(无需编写新的电子邮件),同时它可以让您选择对话框,这非常棒,谢谢Larisa – Sniper 2016-09-17 18:21:03
唯一的代码位那有效。你应该把它包装成一个帮手,并把它放在GitHub Gists上。日Thnx! – CelticParser 2017-01-30 16:29:03
- 1. 客户端更新 - PHP/ASP - 电子邮件收件箱
- 2. 通过客户端发送邮件,无需启动电子邮件客户端(无提示电子邮件)
- 3. 如何将交易电子邮件直接发送到收件箱?
- 4. 是否可以阅读默认Android电子邮件客户端的收件箱?
- 5. 我怎样才能得到Gmail /电子邮件客户端收件箱文件夹中的邮件?
- 6. 如何在LinkButton点击事件上启动电子邮件客户端?
- 7. 发送电子邮件客户端兼容电子邮件
- 8. 检测电子邮件发送的电子邮件客户端
- 9. 如何使用Three20的URL参数启动带有电子邮件地址的电子邮件客户端
- 10. 显示电子邮件收件箱?
- 11. 电子邮件收件箱集成
- 12. 如何从电子邮件客户端获取电子邮件通知?
- 13. 如何在Web电子邮件客户端中显示HTML电子邮件?
- 14. 如何使用电子邮件客户端发送电子邮件?
- 15. java中的电子邮件客户端
- 16. 电子邮件客户端检测
- 17. Django电子邮件客户端
- 18. 从客户端发送电子邮件
- 19. 从客户端发送电子邮件
- 20. 检测电子邮件客户端与动态图像
- 21. 电子邮件客户端看不到纯文本替代HTML电子邮件
- 22. 从桌面电子邮件客户端路由电子邮件到PHP?
- 23. 将附件添加到客户端的默认电子邮件客户端
- 24. 如何在Windows/Mac上从FireMonkey启动电子邮件客户端?
- 25. 如何使用Swfit在ios上启动电子邮件客户端
- 26. Android:如何打开邮件帐户收到的电子邮件?
- 27. 如何在收到电子邮件后启动Jenkins作业
- 28. 从非默认收件箱收到电子邮件?
- 29. 如何打开默认的电子邮件客户端附件
- 30. 使用YII框架将用户注册电子邮件发送到用户的电子邮件收件箱
我很好奇你为什么要这样做。 – MatrixFrog 2010-08-15 23:05:40
客户希望他们的应用程序有一个“电子邮件”按钮,它只是启动默认邮件客户端来检查公司邮件。 – wirbly 2010-08-15 23:16:03