Зачем использовать Intent.createChooser ()? - PullRequest
2 голосов
/ 11 марта 2012

Я нашел код для отправки по электронной почте;это выглядит так:

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

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

startActivity(emailIntent);

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

Ответы [ 3 ]

3 голосов
/ 23 декабря 2013

То, что вы в основном спрашиваете систему во втором утверждении, - это найдите действие, которое может ответить на намерение "android.content.Intent.ACTION_SEND" и с типом, заданным в выражении

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

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

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

startActivity(emailIntent);

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

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

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

1 голос
/ 12 сентября 2013

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

ИМХО, я думаю, что если пользователь хочет выбрать, какое приложение использовать, он не будет проверять кнопку "всегда" в диалоговом окне выбора, которое он получает по умолчанию, и поэтому почти всегда следует избегать вызова createChooser.

1 голос
/ 11 марта 2012

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

...