Как направить открытый почтовый композитор Gmail на Android?

Я использую следующий код. Неполадка этого, когда я запускаю этот код на устройстве. Он открывает Dailogbox, в котором есть 3 варианта отправки почты. "POP, электронная почта, gmail" и т.д. Нажимая на гамиль, появляется композитор. Я просто хочу показать Gamil mail composer напрямую. Вместо того, чтобы отображать окно 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:"));

Ответ 1

Попробуйте этот, Perfect

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

Ответ 2

Не уверен в необходимости выбора. Это из одного из моих приложений...

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

Вы не можете обойти это всплывающее меню программно. Что произойдет, если пользователь попытается получить доступ к функциям и не настроен ли GMail?

Если вы хотите обойти, просто удалите всех других почтовых клиентов, чтобы GMail был единственным, кто мог отправлять/получать электронные письма. Таким образом всплывающее окно не появится.

Ответ 5

Если у вас есть несколько композиторов почты на вашем устройстве Android, и вы просто хотите, чтобы композитор Gamil начал свой запрос, вы должны

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

Ответ 6

Ниже код работал у меня. Это будет поиск почтового клиента и прямой запуск нового композитора электронной почты с отправленными значениями, предварительно заполненными. Если почтовый клиент не существует, тогда его следует поймать, чтобы избежать сбоя.

Хорошее мнение об этом решении заключается в том, что при повторном нажатии он переходит непосредственно на экран вашего приложения, на котором было отправлено намерение электронной почты.

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

Спасибо!