Обьясните пожалуйста каждую строчку что она делает.
Задолбался уже с этим Intent, ничерта не могу понять как он работает.
Вернее теоретически понимаю что intent вызывает другую активность внутри приложения или в других приложениях явным или неявным образом.
Но как, не понимаю.
private void callSendMeMail() {
Intent Email = new Intent(Intent.ACTION_SEND);
Email.setType("text/email");
Email.putExtra(Intent.EXTRA_EMAIL, new String[]{"mail@mail.com" });
Email.putExtra(Intent.EXTRA_SUBJECT, "ATM_Support");
startActivity(Intent.createChooser(Email, "Отправить сообщение разработчику"));
}
Система Android - это посредник. Intent предназначен для организации взаимодействия между компонентами Android с помощью Android. Вы не отправляете сообщение какому-либо приложению напрямую, вы отправляете Системе. Система пробегает по Манифестам всех установленных приложений и ищет те приложения, что объявили способность выполнить действие, которое вы передаете аргументом в Intent, то есть Intent.ACTION_SEND - отправку сообщения.
Далее вы задаете тип данных в этом сообщении - text/email. Через .putExtra вы вносите дополнительную информацию, а именно сообщаете по какому адресу необходимо отправить сообщение (Intent.EXTRA_EMAIL) и тему сообщения (Intent.EXTRA_SUBJECT).
startActivity запускает механизм отправки. Intent.createChooser получая собранный вами Intent предложит выбрать Пользователю Приложение по умолчанию (если их несколько) для отправки сообщения.
Сначала декларируем, что мы собираемся что-то послать (Intent переводится как намерение)
Intent Email = new Intent(Intent.ACTION_SEND);
Далее, говорим, что mime тип того, что мы собираемся послать будет такой то
Email.setType("text/email");
Дополнительно сообщаем еще параметры Intent'а
Email.putExtra(Intent.EXTRA_EMAIL, new String[]{"mail@mail.com" });
Email.putExtra(Intent.EXTRA_SUBJECT, "ATM_Support");
Далее сообщаем ОСи что у нас есть такое то намерение, при этом дополнительно просим (createChooser()), что если обработчиков намерения несколько - то предложить выбор.
startActivity(Intent.createChooser(Email, "Отправить сообщение разработчику"))
В итоге если в системе есть несколько программ, которые посылают email, то будет предложен выбор, если ни одного, то выскочит предупреждалка типа:
сорян нет таких
ОСь определяет какую Activity/приложение запускать ориентируясь на тип и экшн Intent'а
Сборка персонального компьютера от Artline: умный выбор для современных пользователей