Подтвердить что ты не робот

Intent URI для запуска приложения Gmail

Есть ли какой-либо URI, который может указывать на приложение GMAIL в android и помочь мне запустить его?

4b9b3361

Ответ 1

Я использую это в своих приложениях:

Intent mailClient = new Intent(Intent.ACTION_VIEW);
mailClient.setClassName("com.google.android.gm", "com.google.android.gm.ConversationListActivity");
startActivity(mailClient);

Ответ 2

Это работает только для приложения Gmail.

final Intent intent = new Intent(Intent.ACTION_VIEW)
    .setType("plain/text")
    .setData(Uri.parse("[email protected]"))
    .setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail")
    .putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"})
    .putExtra(Intent.EXTRA_SUBJECT, "test")
    .putExtra(Intent.EXTRA_TEXT, "hello. this is a message sent from my demo app :-)");
startActivity(intent);

использовать для большого количества писем:

intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "[email protected]" });

для отдельных писем:

intent.setData(Uri.parse("[email protected]"));

Вы можете добавить extra putExtra(Intent.EXTRA..) и изменить setType для вашей цели. :П

Обновление (22.01.14): важно отметить, что если вы собираетесь использовать этот код, убедитесь, что у пользователя установлен пакет "com.google.android.gm" на его устройстве. На любом языке не забудьте проверить наличие нулевых значений в определенных строках и инициализациях.

Пожалуйста, смотрите Запустить приложение из другого приложения на Android

enter image description here

Ответ 3

Использование имени пакета не рекомендуется в качестве недокументированного метода. В случае, если имя пакета изменится в какой-то день, произойдет сбой кода.

Попробуйте использовать этот код

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

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

Ответ 4

Нет документально подтвержденного и поддерживаемого Intent для запуска Gmail - извините!

Ответ 5

Использовать этот:

Intent intent = getPackageManager().getLaunchIntentForPackage("com.google.android.gm");
startActivity(intent);

Это может зависеть от уровня устройства и API. Используйте с осторожностью.

Ответ 6

Позже требования изменились на начало "приложения электронной почты", поэтому приведенный ниже код в основном запускает приложение электронной почты, и пользователь должен выбрать один из выбранных вариантов.

Итак, мне пришлось использовать

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_SUBJECT, "Emailing link");
intent.putExtra(Intent.EXTRA_TEXT, "Link is \n" +
        "This is the body of hte message");
startActivity(Intent.createChooser(intent, ""));

Ответ 7

Простая и 100% работающая

Intent intent = new Intent (Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
intent.putExtra(Intent.EXTRA_SUBJECT, "Any subject if you want");
intent.setPackage("com.google.android.gm");
if (intent.resolveActivity(getPackageManager())!=null)
    startActivity(intent);
else
    Toast.makeText(this,"Gmail App is not installed",Toast.LENGTH_SHORT).show();

Ответ 8

Этот трюк работает для версии ALL (API 3+), а также text/plain или text/html (sonida):

Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/html");
// intent.setType("text/plain");
final PackageManager pm = getPackageManager();
final List<ResolveInfo> matches = pm.queryIntentActivities(intent, 0);
ResolveInfo best = null;
for (final ResolveInfo info : matches) {
    if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail")) {
        best = info;
        break;
    }
}
if (best != null) {
    intent.setClassName(best.activityInfo.packageName, best.activityInfo.name);
}
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "YOUR SUBJECT");
intent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml("YOUR EXTRAS"));

startActivity(intent);

Ответ 9

Попробуй это

Я попытался много решений, но, наконец, я нашел правильный способ, который отлично работает для меня

try {
    Intent intent = new Intent (Intent.ACTION_VIEW , Uri.parse("mailto:" + "[email protected]"));
    intent.putExtra(Intent.EXTRA_SUBJECT, "your_subject");
    intent.putExtra(Intent.EXTRA_TEXT, "your_text");
    startActivity(intent);
} catch(Exception e) {
    Toast.makeText(Share.this, "Sorry...You don't have any mail app", Toast.LENGTH_SHORT).show();
    e.printStackTrace(); 
}

Заметка

  • Откроется установленное почтовое приложение (электронная почта, Gmail) для отправки почты, в которой вы можете выбрать одно из них.
  • Не используйте прямое имя пакета, например ("com.google.android.gm"), потому что в будущем, если они изменят имя пакета, у вашего приложения возникнут проблемы.

Ответ 10

Он работает.

Intent intent = new Intent(Intent.ACTION_SEND);

String[] strTo = { getString(R.string.mailto) };

intent.putExtra(Intent.EXTRA_EMAIL, strTo);
intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.mail_subject));
intent.putExtra(Intent.EXTRA_TEXT, getString(R.string.mail_body));

Uri attachments = Uri.parse(image_path);
intent.putExtra(Intent.EXTRA_STREAM, attachments);

intent.setType("message/rfc822");

intent.setPackage("com.google.android.gm");

startActivity(intent);

Ответ 11

startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"+mailId)));

Ответ 12

Лучший способ сделать это, используя общий способ/метод:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_SUBJECT, "Email Subject goes here");
intent.putExtra(Intent.EXTRA_TEXT, "Your Message goes here");
startActivity(Intent.createChooser(intent, ""));

Это даст пользователям возможность выбрать GMail (если он установлен) или любое другое приложение для поддержки электронной почты, которое у них есть.

Ответ 13

Работать как для меня просто так:

 Intent(Intent.ACTION_SEND).apply{
            setPackage("com.google.android.gm")
            type = "text/plain"
            putExtra(Intent.EXTRA_TEXT, "Go, go share text!")
        }.also{readyIntent->
            startActivity(readyIntent)
        }

Ответ 14

Да, его рабочий код отлично.....

            Intent intent = new Intent(Intent.ACTION_SEND);
            String[] strTo = { "[email protected]" };
            intent.putExtra(Intent.EXTRA_EMAIL, strTo);
            intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
            intent.putExtra(Intent.EXTRA_TEXT, "Body");
            intent.setType("message/rfc822");
            intent.setPackage("com.google.android.gm");
            startActivity(intent);

Ответ 15

Пожалуйста, проверьте следующий код: он автоматически откроет почтовый композитор по умолчанию.

try {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_APP_EMAIL);
        context.startActivity(intent);
} catch (android.content.ActivityNotFoundException anfe) {
        handleException();
}

Ответ 16

Этот ответ старый, но по-прежнему отображается в поиске Google на первой позиции.

Следовательно, из документации Android, лучший способ сделать это сейчас:

public void composeEmail(String[] addresses, String subject, Uri attachment) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_STREAM, attachment);
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

}

Более подробную информацию можно найти здесь

Ответ 17

final String package = "com.google.android.gm";
// return true if gmail is installed
boolean isGmailInstalled = isAppInstalled(MainActivity.this, package);

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"});
if (isGmailInstalled) {
    intent.setType("text/html");
    intent.setPackage(package);
    startActivity(intent);
} else {  // allow user to choose a different app to send email with
    intent.setType("message/rfc822");
    startActivity(Intent.createChooser(intent, "choose an email client"));
}

// Method to check if app is installed
private boolean isAppInstalled(Context context, String packageName) {
    try {
        context.getPackageManager().getApplicationInfo(packageName, 0);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}

Ответ 18

final String package = "com.google.android.gm";
// return true if gmail is installed
boolean isGmailInstalled = isAppInstalled(MainActivity.this, package);

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"});
if (isGmailInstalled) {
    intent.setType("text/html");
    intent.setPackage(package);
    startActivity(intent);
} else {  // allow user to choose a different app to send email with
    intent.setType("message/rfc822");
    startActivity(Intent.createChooser(intent, "choose an email client"));
}

// Method to check if app is installed
private boolean isAppInstalled(Context context, String packageName) {
    try {
        context.getPackageManager().getApplicationInfo(packageName, 0);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}

Ответ 19

Этот фрагмент откроет средство выбора, которое должно указывать на входящие Gmail.

val intent = Intent(Intent.ACTION_MAIN)
intent.addCategory(Intent.CATEGORY_APP_EMAIL)
try {
    startActivity(Intent.createChooser(intent, getString(R.string.open_email_app)))
            } catch (e: ActivityNotFoundException) {
    showErrorDialog(R.string.error_activity_is_not_found)
            }