如何在android中直接打开Gmail邮件作曲家?

时间:2011-04-26 11:20:17

标签: android gmail

我正在使用以下代码。当我在设备上运行此代码时出现问题。它打开了一个Dailogbox,它有3个发送邮件的选项。 “POP,电子邮件,Gmail等” 点击作曲家出现的gamil。   我只是想直接显示Gamil邮件编辑器。而不是显示一个用于选择选项的dailog框。请帮我。

Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("text/html");

String subject = "My Subject";

emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);

emailIntent.setType("text/html");

String title = "<p align='center'>" + storyTitle + "<br/>" + storyPubDate + "</p>";

String data = "<p> Sent From ABC APP Sent from my Android </p>";

            emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(title + data));
startActivity(Intent.createChooser(emailIntent, "Email:"));

6 个答案:

答案 0 :(得分:20)

试试这个,完美

public void shareToGMail(String[] email, String subject, String content) {
    Intent emailIntent = new Intent(Intent.ACTION_SEND);
    emailIntent.putExtra(Intent.EXTRA_EMAIL, email);
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
    emailIntent.setType("text/plain");
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, content);
    final PackageManager pm = activity.getPackageManager();
    final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0);
    ResolveInfo best = null;
    for(final ResolveInfo info : matches)
        if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail"))
            best = info;
    if (best != null)
        emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name);
    activity.startActivity(emailIntent);
}

答案 1 :(得分:5)

不确定是否需要选择器。这来自我的一个应用......

final Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"jimblackler@gmail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, content);
activity.startActivity(intent);

答案 2 :(得分:4)

试试此代码

 Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
 "mailto", "abc@gmail.com", null));
 emailIntent.putExtra(Intent.EXTRA_SUBJECT, "This is my subject text");
 context.startActivity(Intent.createChooser(emailIntent, null));

价: http://developer.android.com/reference/android/content/Intent.html#ACTION_SENDTO \

答案 3 :(得分:1)

下面的代码对我有用。这将搜索电子邮件客户端并直接启动新电子邮件编辑器,其中预先填充已发送的值。如果没有电子邮件客户端,那么应该抓住它以避免崩溃。

对此解决方案的好想法是,在背面按下它会直接将您带到启动电子邮件意图的应用程序屏幕。

    Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"));
    intent.putExtra(Intent.EXTRA_SUBJECT, "Your Subject");
    intent.putExtra(Intent.EXTRA_TEXT, "The message");
    try {
        startActivity(intent);
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(this, "Mail account not configured", Toast.LENGHT_SHORT).show();
    }

谢谢!

答案 4 :(得分:0)

您无法以编程方式绕过此弹出式窗口。如果用户尝试访问该功能但未配置GMail会发生什么?

如果您想绕过,只需删除所有其他电子邮件客户端,以便GMail是唯一可以发送/接收电子邮件的客户端。这样弹出窗口就不会出现了。

答案 5 :(得分:0)

如果您的Android设备中有多个邮件编辑器,而您只是希望Gamil编写器启动您的请求,则必须

emailIntent.setClassName("xxxgamil composer package name xxx", "xxxgmail composer class name xxx");  
    startActivity(emailIntent);