JavaRush/Курсы/Курс "Программирование под Андроид"/Упражняемся в использовании интентов

Упражняемся в использовании интентов

Открыта

Справочник распространённых интентов

Для тех, кто использует эмулятор: Эта часть курса — одна из тех немногих, которые на эмуляторе не работают, так что переходите к ответам и следующим заданиям. Вернитесь к этому уроку, когда у Вас появится реальное Андроид-устройство для разработки.

Комментарии (24)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Эшли
Уровень 10
24 апреля 2022, 10:40
Чёрт, лучше бы они на примере ACTION_SEND объяснили эти интенты. Или на примере смены активностей. Это было непросто, но я справился. Значит и у тебя получится!)
maximk0
Уровень 6
26 января 2022, 19:10
Тоже не меньше часа это задание заняло) Была проблема в том, что либо код вставлял емейл отправителю, либо вставлял заголовок письма и его текст, а вот все вместе не хотело работать. В итоге проблема была решена данным способом:
Intent emailSelectorIntent = new Intent(Intent.ACTION_SENDTO);
       emailSelectorIntent.setData(Uri.parse("mailto:"));

       Intent emailIntent = new Intent(Intent.ACTION_SEND);
       emailIntent.putExtra(Intent.EXTRA_EMAIL, email);
       emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
       emailIntent.putExtra(Intent.EXTRA_TEXT, body);
       emailIntent.setSelector( emailSelectorIntent );
       startActivity(emailIntent);
Спасибо этому человеку, задавшему вопрос и самому нашедшему ответ на него.
HokkaidoAndroid Developer в Netflix
17 мая 2024, 18:30
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"cafe_in_jonny@gmail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "Coffee");
intent.putExtra(Intent.EXTRA_TEXT, priceMessage);
if(intent.resolveActivity(getPackageManager()) != null){
    startActivity(intent);
}
Все отправляет и текст и тему, но спрашивает, через что открывать - через имейл, хром, блютуз, гугл драйв и т.д предлагает. Можно выбрать (always) через имейл и будет всегда по идее через него открывать и запрашивать выбор перестанет.
HokkaidoAndroid Developer в Netflix
17 мая 2024, 19:56
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"cafe_in_jonny@gmail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "Coffee");
intent.putExtra(Intent.EXTRA_TEXT, priceMessage);

if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
} else {
    Toast.makeText(this, "No email client installed.", Toast.LENGTH_SHORT).show();
}
И вот так тоже работает. На эмуляторе лично у меня не находило приложение через которое можно обработать данный Intent, хоть он там и есть, поэтому срабатывал Toast, а вот на физ девайсе все прекрасно работало. Без if() проверки на эмуляторе все работало. Проверка на
if(intent.resolveActivity(getPackageManager()) != null)
необходима. Ибо если на телефоне нету приложения через которое можно обработать Intent, будет краш. И лучше использовать в данном случае ACTION_SEND, он более универсален и работает с большим количеством приложений. Можно сравнить два кода, тот который я кидал в первом сообщении с тем который кидал тут. В первом для обработки будет больше приложений, как я и описывал выше. Этот код, кстати не работал на эмуляторе из-за схемы Url"mailto:" из за того, что не все приложения электронной почты могут его обрабатывать, хотя на физ. девайсе все работает.
Миша Зефир Android Developer
29 декабря 2021, 12:31
Если ты так же как и я в шоксе от происходящего, держи первую необходимую помощь. https://www.youtube.com/watch?v=jazmVOYsun8&list=PLAma_mKffTOT_bGrVruy1_JxkFLjh5sfF&index=17 https://www.youtube.com/watch?v=jFEEemoNpxo&list=PLAma_mKffTOT_bGrVruy1_JxkFLjh5sfF&index=19
Lina Buller
Уровень 32
10 декабря 2021, 12:41
Если выбрать это
setType("message/rfc822")
то будет предлагать только мессенжеры и почту
24 мая 2021, 04:03
Сделал. DanTel 24.05.2021
🦔 Викторведу учебный тг-канал в t.me/JavangelionExpert
2 декабря 2020, 10:02
1. Сейчас эмуляторы далеко продвинулись, можно смело на них проверять. Естественно, нужен установленный почтовый клиент и учётка для отправки письма. 2. Открываем справочник, находим EMAIL, смотрим пример. 3. У меня ACTION_SENDTO не сработало, отработало просто ACTION_SEND. 4. Без установки типа через метод setType() отправлять НЕ будет. 5. На проверке может ли кто-то обработать действие, дёрнулась рука обработать исключениями с блоками try catch ; ) 6. Всё получится!
Paul SoiaAndroid Developer в Tallium
30 июля 2020, 07:19
раньше в эмуляторах не было гугл сервисов, сейчас есть, вот оно и работает уже
Антон
Уровень 40
6 апреля 2020, 16:26
На эмуляторе работает.
cepzik
Уровень 3
28 сентября 2019, 08:25
Денис
Уровень 4
19 апреля 2019, 06:48
может кому пригодится КОД
Name Unknown ;)
Уровень 2
5 февраля 2021, 17:09
Вот здесь
if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(Intent.createChooser(intent, getString(R.string.сhoose_email_app)));
}
у меня были проблемы с getString(R.string.сhoose_email_app) попробовал переделать в getString(intent) всё равно не сработало, но пофиг, я уже здесь в одном из комментов расписал, что у меня сработало