Android 如何打开电子邮件客户端而不使用意图发送电子邮件?

Android 如何打开电子邮件客户端而不使用意图发送电子邮件?,android,android-intent,Android,Android Intent,我想在用户按下按钮时打开默认电子邮件客户端或可用电子邮件客户端列表。当用户选择使用哪个客户端时,应将用户重定向到电子邮件应用程序的收件箱。这是否可能使用Android意图 只有在实际创建电子邮件时,我才能找到启动电子邮件的解决方案。为此,您需要创建一个自定义选择器,例如,您可以创建一个BottomSheetDialog,其中包含ResolveInfo项的RecyclerView 获取能够发送电子邮件的软件包 Intent sendIntent = new Intent(); sendIntent

我想在用户按下按钮时打开默认电子邮件客户端或可用电子邮件客户端列表。当用户选择使用哪个客户端时,应将用户重定向到电子邮件应用程序的收件箱。这是否可能使用Android意图


只有在实际创建电子邮件时,我才能找到启动电子邮件的解决方案。

为此,您需要创建一个自定义选择器,例如,您可以创建一个
BottomSheetDialog
,其中包含
ResolveInfo
项的
RecyclerView

获取能够发送电子邮件的软件包

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "test");
sendIntent.setType("text/plain");
List<ResolveInfo> resolveInfoList = getActivity().getPackageManager()
        .queryIntentActivities(sendIntent, 0);
并在“回收器”视图中单击该项目

Intent launchIntent = getPackageManager().getLaunchIntentForPackage(resolveInfo.activityInfo.packageName);
if (launchIntent != null) { 
    startActivity(launchIntent);//null pointer check in case package name was not found
}

为此,您需要创建一个自定义选择器,例如,您可以创建一个
BottomSheetDialog
,其中包含
ResolveInfo
项的
RecyclerView

获取能够发送电子邮件的软件包

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "test");
sendIntent.setType("text/plain");
List<ResolveInfo> resolveInfoList = getActivity().getPackageManager()
        .queryIntentActivities(sendIntent, 0);
并在“回收器”视图中单击该项目

Intent launchIntent = getPackageManager().getLaunchIntentForPackage(resolveInfo.activityInfo.packageName);
if (launchIntent != null) { 
    startActivity(launchIntent);//null pointer check in case package name was not found
}

所以你只想给我一个打开邮件应用程序的选项?就这些吗?@Ranjan是的,就这些。根据我们最近在一个项目上所做的一些测试,我们没有可靠的方法来做到这一点。所以你只想让我们选择打开邮件应用程序?就这些吗?@Ranjan是的,就这些。根据我们最近在一个项目上所做的一些测试,没有可靠的方法来做到这一点。这似乎创建了一个新的电子邮件消息,我不想要。我只想打开电子邮件应用程序。@mrfonnes这将打开应用程序本身,而不是创建电子邮件,
getLaunchIntentForPackage
将为您完成此操作。。你测试了吗?啊,对不起,我只测试了代码的第一部分(意图),它指示了新的电子邮件消息。我将测试其余的。第一个
sendIntent
是获取具有“发送到”操作的包,然后使用
Intent launchIntent=getPackageManager().getLaunchIntentForPackage
,以便当第一次指定操作时使用该软件包,但第二次使用时仅启动应用程序。这似乎会创建一封新的电子邮件,我不希望这样做。我只想打开电子邮件应用程序。@mrfonnes这将打开应用程序本身,而不是创建电子邮件,
getLaunchIntentForPackage
将为您完成此操作。。你测试了吗?啊,对不起,我只测试了代码的第一部分(意图),它指示了新的电子邮件消息。我将测试其余的。第一个
sendIntent
是获取具有“发送到”操作的包,然后使用
Intent launchIntent=getPackageManager()。getLaunchIntentForPackage
从第一个指定操作时开始使用该包,但第二个意图仅启动应用程序。