发送电子邮件意向

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "emailaddress@emailaddress.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body.");

startActivity(Intent.createChooser(intent, "Send Email"));

上面的代码打开一个对话框,显示以下应用程序: - 蓝牙,Google文档,雅虎邮箱,Gmail,Orkut,Skype等。

其实,我想过滤这些列表选项。 我只想显示电子邮件相关的应用程序,例如Gmail,Yahoo Mail。 怎么做?

我在“Android电子市场”应用程序中看到过这样的例子。

  • 打开Android电子市场应用
  • 打开开发人员指定他/她的电子邮件地址的任何应用程序。 (如果你找不到这样的应用程序,只需打开我的应用程序: - market:// details?id = com.becomputer06.vehicle.diary.free,或者搜索'Vehicle Diary')
  • 向下滚动到'DEVELOPER'
  • 点击“发送电子邮件”
  • 该对话框只显示电子邮件应用程序,例如Gmail,雅虎邮件等。它不显示蓝牙,Orkut等。什么代码产生这样的对话?


    当你将改变你的intent.setType如下所示,你会得到

    intent.setType("text/plain");
    

    使用android.content.Intent.ACTION_SENDTO仅获取电子邮件客户端列表,不使用Facebook或其他应用程序。 只是电子邮件客户端。 例如:

    new Intent(Intent.ACTION_SENDTO);
    

    我不会建议你直接进入电子邮件应用程序。 让用户选择他最喜欢的电子邮件应用。 不要限制他。

    如果您使用ACTION_SENDTO,则putExtra无法将主题和文本添加到意图。 使用Uri添加主题和正文文本。

    编辑:我们可以使用message/rfc822而不是"text/plain"作为MIME类型。 但是,这并不表示“仅提供电子邮件客户端” - 它表示“提供支持message / rfc822数据的任何内容”。 这可能很容易包含一些非电子邮件客户端的应用程序。

    message/rfc822支持.mhtml, .mht, .mime MIME类型


    接受的答案不适用于4.1.2。 这应该适用于所有平台:

    Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
                "mailto","abc@gmail.com", null));
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    emailIntent.putExtra(Intent.EXTRA_TEXT, "Body");
    startActivity(Intent.createChooser(emailIntent, "Send email..."));
    

    希望这可以帮助。

    更新:据marcwjj,似乎在4.3,我们需要传递字符串数组而不是字符串的电子邮件地址,使其工作。 我们可能需要再添加一行:

    intent.putExtra(Intent.EXTRA_EMAIL, addresses); // String[] addresses
    

    参考链接


    主要有三种方法:

    String email = /* Your email address here */
    String subject = /* Your subject here */
    String body = /* Your body here */
    String chooserTitle = /* Your chooser title here */
    

    1.自定义Uri

    Uri uri = Uri.parse("mailto:" + email)
        .buildUpon()
        .appendQueryParameter("subject", subject)
        .appendQueryParameter("body", body)
        .build();
    
    Intent emailIntent = new Intent(Intent.ACTION_SENDTO, uri);
    startActivity(Intent.createChooser(emailIntent, chooserTitle));
    

    2.使用Intent额外:

    Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:" + email));
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
    emailIntent.putExtra(Intent.EXTRA_TEXT, body);
    //emailIntent.putExtra(Intent.EXTRA_HTML_TEXT, body); //If you are using HTML in your body text
    
    startActivity(Intent.createChooser(emailIntent, "Chooser Title"));
    

    3.支持库ShareCompat

    Activity activity = /* Your activity here */
    
    ShareCompat.IntentBuilder.from(activity)
        .setType("message/rfc822")
        .addEmailTo(email)
        .setSubject(subject)
        .setText(body)
        //.setHtmlText(body) //If you are using HTML in your body text
        .setChooserTitle(chooserTitle)
        .startChooser();
    
    链接地址: http://www.djcxy.com/p/23257.html

    上一篇: Send Email Intent

    下一篇: Post different text on facebook and twitter using Android intents