Как создать намерение запустить любое приложение электронной почты?
-
01-10-2019 - |
Вопрос
Я нашел различные темы здесь и в другом месте на создании намерения для отправки электронной почты, и это, кажется, довольно простой. Я ищу намерение просто запустить любой клиент электронной почты, который может иметь пользователь.
Вот код, который я видел для отправки электронной почты (Опубликовано только для справки, это не обслуживает мои потребности, так как я не хочу отправлять новое сообщение):
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"recipient@example.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "Subject of the message");
i.putExtra(Intent.EXTRA_TEXT , "Body of the message");
Вот код, который я собрал для конкретно запуска клиента Gmail по имени пакета:
PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.google.android.gm");
startActivity(intent);
Код выше работает, но не гибкий, в том, что пользователь может не использовать Gmail, но другой встроенный приложение электронной почты или приложение для электронной почты 3-го вечеринка. Я ищу намерение, которое приведет к выбору в этом случае, поэтому пользователь может решить, какое приложение запускается для чтения электронной почты.
Кто-нибудь знает, как это достичь?
Решение
Кто-нибудь знает, как это достичь?
Такого нет Intent
- Вы можете сообщить об этом, изучив проявление для приложения электронной почты.
Единственное, что вы можете сделать, это построить себе список почтовых клиентов, которые вы хотите ссылаться и использовать PackageManager
код, который вы показываете выше для каждого.
Другие советы
Может ли URL-адрес Mailto использоваться для этого для этого? - ----- Я смог сделать это, используя следующий образец кода:
mt = MailTo.parse("mailto:yourname@gmail.com");
sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{mt.getTo()});
sendIntent.putExtra(Intent.EXTRA_TEXT, "");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Enter a subject");
sendIntent.setType("message/rfc822");
startActivity(Intent.createChooser(sendIntent, "Send a Message:"));
Другой подход может быть намерен. CreateChooser (); И позвольте пользователя выбрать правильное приложение.
Кстати, список может содержать не только электронные приложения