2010-06-30 1 views
3

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

Вот код, который я видел для отправки электронной почты (размещена только для справки, это не отвечает моим потребностям, я не хочу, чтобы отправить новое сообщение):

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("text/plain"); 
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); 
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, но другие встроенный в приложении электронной почты или стороннем приложении электронной почты. Я ищу намерение, которое приведет к выбора в этом случае, чтобы пользователь мог решить, какое приложение запускается для чтения электронной почты.

Кто-нибудь знает, как это сделать?

ответ

0

Кто-нибудь знает, как выполнить ?

Нет такого Intent - вы можете это рассказать, изучив манифест для приложения электронной почты.

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

+0

Спасибо, похоже, это будет так, как я должен идти. Вы бы подумали, что это будет обычный тип намерений, который будет включен в состав платформы. – afonseca

+0

Можете ли вы рассказать мне, как создать список почтовых клиентов и использовать с ним packmanager? – Bhargav

+0

@Bhargav: Вы, безусловно, можете задать отдельный вопрос о переполнении стека. – CommonsWare

1

Другим подходом может быть Intent.createChooser(); и позвольте пользователю выбрать нужное приложение.

КСТАТИ Список может содержать не только приложение электронной почты

+0

Спасибо за альтернативный подход, но это выиграло Я работаю в своей ситуации, потому что я не хочу, чтобы пользователю приходилось выбирать каждый раз. – afonseca

5

Может почтовую URL использоваться каким-либо образом для достижения этой цели? --Edit-- Я был в состоянии сделать это, используя следующий код:

mt = MailTo.parse("mailto:[email protected]"); 
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:")); 
+0

умная идея ... –

+0

Это отправит электронное письмо. Это не то, чего хотел ОП. ОП сказал, жирным шрифтом: «Я не хочу отправлять новое сообщение». – CommonsWare

Смежные вопросы