如何在Android中直接打开Gmail邮件编辑器?

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

我正在使用以下代码。当我在设备上运行此代码时出现问题。它会打开一个对话框,其中有 3 个用于发送邮件的选项。 “POP、电子邮件、Gmail”等

点击 Gmail,就会出现作曲家。我只想直接显示 Gmail 邮件编辑器,而不是显示用于选择选项的对话框。

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:"));
android gmail
6个回答
26
投票

试试这个,完美

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);
}

7
投票

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

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

4
投票

试试这个代码

 Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
 "mailto", "[email protected]", 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\


2
投票

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

此解决方案的优点在于,按回键时,它会将您直接带到开始发送电子邮件意图的应用程序屏幕。

    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();
    }

谢谢!


0
投票

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

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


0
投票

如果您的 Android 设备中有多个邮件编辑器,并且您只想启动 Gamil 编辑器来满足您的请求,则必须

emailIntent.setClassName("xxxgamil composer package name xxx", "xxxgmail composer class name xxx");  
    startActivity(emailIntent);
© www.soinside.com 2019 - 2024. All rights reserved.