Как создать намерение запустить любое приложение электронной почты?

StackOverflow https://stackoverflow.com/questions/3147543

  •  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 (); И позвольте пользователя выбрать правильное приложение.

Кстати, список может содержать не только электронные приложения

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top