ANDROID: ВИКЛИК ІНШОГО ДОДАТКУОднією з найбільш важливих можливостей Android є здатність додатків відправляти користувача в інший додаток на основі «дії», яку той хотів би виконати. Наприклад, щоб з вашого додатка переглянути адресу на карті досить створити запит на перегляд адреси, використовуючи Intent, а система Android запустить інший додаток, який покаже адресу на карті. Як пояснювалось в першому уроці про створення свого першого додатка, ви повинні використовувати intents (наміри) для навігації між activity у власному додатку. Ви, зазвичай, робите це з explicit intent (явним наміром), який визначає точне ім'я класу компонента, який хочете запустити. Тим не менше, якщо хочете, щоб окремий додаток виконав дію, наприклад, "переглянув карту", то повинні використати неявний намір. ПОБУДОВА НЕЯВНОГО НАМІРУ (IMPLICIT INTENT)Неявні наміри не оголошують ім'я класу компонента, щоб його запустити, а замість цього оголошують виконувану дію. Дія визначає, що ви хочете зробити, наприклад, переглянути, редагувати, відправити чи отримати щось. Наміри також часто включають в себе пов'язані з дією дані, такі як адресу, яку хочете переглянути, або повідомлення електронної пошти, яке хочете відправити. Залежно від наміру, який хочете створити, дані можуть бути Uri, один з декількох інших типів даних, або наміру зовсім не потрібно дані. Uri number = Uri.parse("tel:5551234"); Коли ваш додаток спричинює цей намір, викликаючи startActivity(), додаток Phone ініціює виклик даного номеру телефону. • Переглянути карту: // Точка на карті на основі адреси • Перегляд веб-сторінки: Uri webpage = Uri.parse("http://www.android.com"); Інші види неявних намірів вимагають "extra" (додаткових) даних, які надають різні типи даних, наприклад, таких як рядки. Ви можете додати одну або більше частин додаткових даних, використовуючи різні методи putExtra(). • Надіслати електронну пошту з додатком: Intent emailIntent = new Intent(Intent.ACTION_SEND); • Створити подію в календарі: Intent calendarIntent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI); Примітка: Цей намір для події в календарі підтримується тільки з рівнем API 14 і вище. Примітка: Важливо, щоб ви визначили свій Intent як можна більш конкретніше. Наприклад, якщо хочете показати зображення, використовуючи намір ACTION_VIEW, то повинні вказати тип MIME image/*. Це запобігає запуску наміром додатків, які можуть "переглядати", та інших типів даних (наприклад, додаток карти). ПЕРЕВІРКА, ЧИ ІСНУЄ ДОДАТОК ДЛЯ ОТРИМАННЯ INTENTХоча Android-платформа гарантує, що деякі наміри буде вирішувати один з вбудованих додатків (наприклад, додатки Phone, Email чи Calendar), ви завжди повинні включати крок перевірки перед викликом наміру. Увага: Якщо викликаєте намір і немає додатка на пристрої, який може обробити цей намір, то ваш додаток завалиться. Щоб перевірити чи є доступні activity, які можуть реагувати на намір, викликаєте queryIntentActivities(), щоб отримати перелік activity, здатних обробляти ваш Intent. Якщо повернутий List не порожній, то можете сміливо використовувати намір. Наприклад: PackageManager packageManager = getPackageManager(); Якщо isIntentSafe рівне true, то, принаймні один додаток буде реагувати на намір. Якщо false, то немає жодного додатку для обробки наміру.
ЗАПУСК ACTIVITY З INTENT
Приклад діалогу вибору, який з'являється, коли більше одного додатка може обробляти намір. Після того, як ви створили свій Intent і встановили додаткову інформацію, викликайте startActivity(), щоб відправити його в систему. Якщо система визначає більше однієї activity, яка може обробляти намір, то відображає користувачу діалогове вікно, щоб він вибрав додаток, який використовувати, як показано на малюнку вище. Якщо є лише одна activity, яка обробляє намір, то система негайно запускає її. startActivity(intent); Нижче наведений повний приклад, який показує, як створити намір, щоб подивитися карту, переконатися, що існує додаток для обробки наміру, а потім запустити його: // Створення наміру ВІДОБРАЖЕННЯ ВИБОРУ ДОДАТКУ
Діалог вибору. Зверніть увагу, що коли ви запускаєте activity, передаючи свій Intent в startActivity(), і є більш ніж один додаток, який реагує на намір, то користувач може вибрати, які програми використовувати за замовчуванням (вибравши прапорець в нижній частині діалогового вікна). Це приємно, коли виконується дія, для якої користувач, як правило, хоче використовувати той же додаток щоразу, наприклад, при відкритті веб-сторінки (користувачі, ймовірно, використовують тільки один веб-браузер) або приймаючи фото (користувачі, ймовірно, мають одну камеру). Intent intent = new Intent(Intent.ACTION_SEND); Буде виведене діалогове вікно зі списком додатків, які відповідають на намір, переданий в метод createChooser(), що використовує прикладений текст як заголовок діалогу. |