如何检测 Android 设备上是否配置了电子邮件客户端?

问题描述 投票:0回答:2

如何检测 Android 设备上是否配置了电子邮件客户端?如果没有配置电子邮件帐户,Android 会将其视为短信(我使用 android.content.Intent.ACTION_SEND)。我想提示用户没有配置电子邮件客户端。

android email email-client
2个回答
0
投票

不要提示用户未配置电子邮件客户端,而是考虑通过 createChooser() 将 ACTION_SEND 意图包装在选择器中。

createChooser()
将返回用户选择的意图。如果用户没有选择有效的电子邮件客户端,您也许可以弹出错误消息或向用户提供设置屏幕来声明有效的电子邮件客户端。

请注意,无法确定发送应用程序是否是有效的“电子邮件”应用程序,只能确定它是否是发送应用程序。这就是为什么应该使用选择器,以便用户意识到他们没有设置电子邮件客户端。另请注意,用户没有电子邮件客户端的情况极为罕见,因为他们在启动手机时至少必须注册 Google 帐户(以便他们能够访问 Gmail)。

以下是使用选择器发送电子邮件的示例:

sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("application/octet-stream");
sendIntent.putExtra(Intent.EXTRA_EMAIL,new String[] {"[email protected]"});
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Email Subject");
sendIntent.putExtra(Intent.EXTRA_TEXT, "Body text of email message");
startActivity(Intent.createChooser(sendIntent, "Send Mail"));

0
投票

在所有设备(OnePlus、Moto、三星等)上检查电子邮件客户端的正确方法如下:

在清单文件中,您需要在应用程序标记后添加以下代码。

<queries>
        <intent>
            <action android:name="android.intent.action.SENDTO" />
            <data android:scheme="*" />
        </intent>
</queries>

您可以根据需要更换方案。 执行此操作后,您需要在单击按钮(或与您的电子邮件关联的任何事件)时使用以下代码:

Intent email = new Intent(Intent.ACTION_SENDTO);
email.setData(Uri.parse("mailto:"));
email.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
email.putExtra(Intent.EXTRA_SUBJECT, "Any Subject");
if (email.resolveActivity(getPackageManager()) != null)         
    startActivity(email);
else 
   // A toast to display any message when email client is not available
© www.soinside.com 2019 - 2024. All rights reserved.