2012-03-11 2 views
2

Я нашел код для отправки электронной почты; это выглядит следующим образом:Зачем использовать Intent.createChooser()?

startActivity(Intent.createChooser(emailIntent, "Email")); 

Я изменил его:

startActivity(emailIntent); 

И результат появляется то же самое на моем устройстве. Зачем использовать Intent.createChooser()?

ответ

1

Полезно, если на телефоне установлено более одного почтового клиента. Пользователь может выбрать, какой из них использовать, если вы используете intent.createChooser(...)

1

Использование выборщика заставляет пользователя делать выбор между установленными приложениями, которые удовлетворяют намерениям, независимо от того, установили ли они один из них как по умолчанию. Если пользователь не установил обработчик по умолчанию, он получит выборщик независимо от того, вызываете ли вы createChooser или нет. Единственное преимущество, которое я вижу в вызове выбора, заключается в том, что вы можете ввести имя в диалог выбора, а не получать по умолчанию сообщение «Полное действие с использованием».

IMHO, я думаю, что если пользователь хочет выбрать, какое приложение использовать, они не будут проверять кнопку «всегда» в диалоговом окне выбора, которое они получают по умолчанию, и поэтому вызов createChooser почти всегда следует избегать.

3

Что вы в основном спросить систему во втором заявлении, это пойти найти деятельность, которая может ответить на Intent «android.content.Intent.ACTION_SEND» и с типом установленного в заявлении

emailIntent.setType("message/rfc822"); // or "text/plain" 

но в первом заявлении вы запрашиваете выбор разработчика Android, независимо от того, существует ли значение 0/один/или более одного действия для обработки намерения.

Кроме того, если вы используете оператор

startActivity(emailIntent); 

И нет почтовых клиентов, чтобы ответить на ваши намерения (например, в эмуляторе), то приложение с броском «ActivityNotFoundException», но если вы используете:

startActivity(Intent.createChooser(emailIntent, "Email")); 

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

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