【问题标题】:Intent for viewing incoming email messages/opening email app查看传入电子邮件消息/打开电子邮件应用程序的意图
【发布时间】:2017-05-15 11:49:48
【问题描述】:

我正在编写一个 Android 应用程序,该应用程序要求用户通过单击通过电子邮件收到的链接来确认他们的订阅。为此,我想创建一个快捷方式来打开首选的电子邮件应用程序。以下代码使我的 Gmail 应用程序崩溃:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setType("message/rfc822");
startActivity(intent);

会有其他解决方案来解决这个问题吗?

【问题讨论】:

  • 你想只打开gmail吗?
  • 只是选择行为。如果> 1个客户端可以处理电子邮件,则应弹出一个选择器,否则只需打开已安装的应用程序。
  • 好的。您是否也发送任何附件?我有一个解决方案,但不适用于附件
  • 我不想发送。我想打开电子邮件应用程序,因为我只需要点击一个链接。
  • 好的.. 为您的要求发布答案。试试看。

标签: android android-intent


【解决方案1】:

更正您的代码: message/rfc822 作为 MIME 类型 - 它不指示 -- 仅显示电子邮件客户端 -- 它指示 -- 显示任何支持 message/rfc822 数据的内容。这可能包括一些不是电子邮件客户端的应用程序。

根据安卓documentation。如果您想确保您的意图仅由电子邮件应用程序(而不是其他短信或社交应用程序)处理,请使用 ACTION_SENDTO 操作并包含“mailto:”数据方案。例如:

    public void composeEmail(String[] addresses, String subject) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:"));
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

【讨论】:

  • 这会启动一个消息编辑器...我需要显示入站电子邮件列表。
  • 对我来说几年前它还在工作。可能是最近版本的一些变化。结合这个 SO 答案尝试上面的代码stackoverflow.com/a/3982785/3142342
【解决方案2】:

使用此结构为可以执行电子邮件发送的应用创建选择器。

        Intent mIntent = new Intent(Intent.ACTION_SEND);
        mIntent.setType("text/html");
        mIntent.putExtra(...); // if you need extra just add it here
        mIntent = Intent.createChooser(mIntent, "Select Email Application...");
        startActivity(mIntent);

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 2017-05-16
    相关资源
    最近更新 更多