Java 如何在Android中打开默认电子邮件客户端,而不发送消息?

Java 如何在Android中打开默认电子邮件客户端,而不发送消息?,java,android,email,android-intent,kotlin,Java,Android,Email,Android Intent,Kotlin,我正在寻找一种在Android上打开默认电子邮件应用程序的方法,但不使用它发送消息。我知道我可以使用mailto://或intent参数来实现这一点,但这会自动打开新的消息屏幕。我想归档的是打开应用程序本身 到目前为止,我已经试过了 override fun startEmailApplication() { val intent = Intent(Intent.ACTION_MAIN) intent.addCategory(Intent.CATEGORY_APP_EMAIL)

我正在寻找一种在Android上打开默认电子邮件应用程序的方法,但不使用它发送消息。我知道我可以使用
mailto://
或intent参数来实现这一点,但这会自动打开新的消息屏幕。我想归档的是打开应用程序本身

到目前为止,我已经试过了

override fun startEmailApplication() {
    val intent = Intent(Intent.ACTION_MAIN)
    intent.addCategory(Intent.CATEGORY_APP_EMAIL)
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    startActivity(intent)
}
但每次我

android.content.ActivityNotFoundException:找不到处理Intent的活动{act=android.Intent.action.VIEW cat=[android.Intent.category.APP_EMAIL]flg=0x10000000}


Alt通过电子邮件应用程序(AquaMail、Outlook)安装。

您可以执行以下操作:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_APP_EMAIL);
getActivity().startActivity(intent);

我会结合一些小东西

  • 检测给定意图的响应包:

    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setType("text/plain");
    List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(intent, 0);
    boolean canResolve = resolveInfos.size() > 0; 
    

  • 您也不会有
    活动NotFoundException
    ,因为我们会事先检查是否有东西会响应我们的
    意图。请随意在
    中处理失败案例,否则

    您现在使用
    类别应用程序电子邮件的方式就是这样。看见你应该把它和我一起用。在最近的一个项目中,我们试图做你想要做的事情(转到用户电子邮件应用程序的收件箱),但我们放弃了这一努力,因为它根本不可靠。
    
    if (resolveInfos.size() > 0) {
        startActivity(getPackageManager().getLaunchIntentForPackage(resolveInfos.get(0).resolvePackageName))
    }