0Pricing
Android Academy · Урок

Намерения и навигация

Перемещайтесь между Activity с помощью явных Intents, передавайте данные через putExtra/getExtra и запускайте внешние приложения с помощью неявных Intents.

«Намерения и навигация» — бесплатный урок Android Academy на CoddyKit. Это урок 5 из 7. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 7 уроков всего.

Что такое Intent?

Intent — это сообщение, которое указывает Android выполнить действие:

  • Явный Intent — запускает конкретную Activity в вашем приложении
  • Неявный Intent — просит Android найти приложение, способное выполнить действие (открыть URL, позвонить по номеру, поделиться текстом)

Intent — основной способ взаимодействия Activity друг с другом.

Явный Intent: открытие экрана

Запуск другой Activity в вашем приложении:

// In your button click listener:
binding.btnGoToDetail.setOnClickListener {
    val intent = Intent(this, DetailActivity::class.java)
    startActivity(intent)
}

// To also close the current screen after navigating:
binding.btnLogin.setOnClickListener {
    val intent = Intent(this, HomeActivity::class.java)
    startActivity(intent)
    finish() // removes LoginActivity from back stack
}

Передача данных с помощью extras

Используйте extras, чтобы передать данные в следующую Activity:

  • intent.putExtra("key", value) — добавляет данные
  • intent.getStringExtra("key") — получает String
  • intent.getIntExtra("key", defaultValue) — получает Int

Используйте константы для ключей, чтобы избежать опечаток.

Передача и получение extras

Отправка данных из одной Activity и их чтение в следующей:

// Sending Activity:
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("PRODUCT_ID", 42)
intent.putExtra("PRODUCT_NAME", "Laptop")
startActivity(intent)

// DetailActivity — receiving:
class DetailActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_detail)

        val id = intent.getIntExtra("PRODUCT_ID", -1)
        val name = intent.getStringExtra("PRODUCT_NAME") ?: ""
        // Use id and name to load data
    }
}

Неявные Intent

Неявные Intent позволяют приложению использовать функции других установленных приложений, не зная, какое именно приложение их обрабатывает:

  • Открыть веб-URL в браузере
  • Набрать номер телефона
  • Отправить электронное письмо
  • Поделиться текстом с любым приложением

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

Распространённые неявные Intent

Запуск системных действий с помощью неявных Intent:

import android.content.Intent
import android.net.Uri

// Open a web page
val webIntent = Intent(Intent.ACTION_VIEW,
    Uri.parse("https://developer.android.com"))
startActivity(webIntent)

// Dial a phone number
val dialIntent = Intent(Intent.ACTION_DIAL,
    Uri.parse("tel:+15551234567"))
startActivity(dialIntent)

// Share text
val shareIntent = Intent(Intent.ACTION_SEND).apply {
    type = "text/plain"
    putExtra(Intent.EXTRA_TEXT, "Check out this app!")
}
startActivity(Intent.createChooser(shareIntent, "Share via"))

Получение результатов

Если нужно получить результат с другого экрана (например, выбрать изображение или отправить форму), используйте Activity Result API:

  • Зарегистрируйте средство запуска с помощью registerForActivityResult
  • Запустите его при необходимости
  • Обработайте результат в обратном вызове

Этот подход заменяет старый шаблон с startActivityForResult / onActivityResult.

Пример Result API

Запрос фотографии из галереи и получение результата:

import androidx.activity.result.contract.ActivityResultContracts

class MainActivity : AppCompatActivity() {

    private val pickImage = registerForActivityResult(
        ActivityResultContracts.GetContent()
    ) { uri ->
        // 'uri' is the selected image URI, or null if cancelled
        if (uri != null) {
            binding.ivPhoto.setImageURI(uri)
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...
        binding.btnPickPhoto.setOnClickListener {
            pickImage.launch("image/*")
        }
    }
}

Глубокие ссылки

Глубокая ссылка — это URL, который напрямую открывает определённый экран вашего приложения. Такие ссылки полезны для push-уведомлений и маркетинговых ссылок.

Объявляйте глубокие ссылки в AndroidManifest.xml с помощью intent-filter и тега data, указывающего схему и хост URL.

Быстрая проверка

Какой тип Intent следует использовать, чтобы открыть веб-сайт в браузере пользователя?

Повторение: Intent и навигация

Теперь вы умеете переходить между экранами и запускать системные функции:

  • Явный Intent — запускает конкретную Activity в вашем приложении
  • putExtra / getExtra — передают данные между Activity
  • Неявный Intent — открывает URL, набирает номера и отправляет содержимое
  • Activity Result API — получает данные из другой Activity

Далее: отображение динамических списков с помощью RecyclerView.

Часто задаваемые вопросы

Урок «Намерения и навигация» бесплатный?

Да — полный текст урока «Намерения и навигация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 7 уроков всего.

Чему я научусь в уроке «Намерения и навигация»?

Перемещайтесь между Activity с помощью явных Intents, передавайте данные через putExtra/getExtra и запускайте внешние приложения с помощью неявных Intents. Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Android Academy?

Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 5 из 7.

Сколько времени занимает урок «Намерения и навигация»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Android Academy?

Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Структура проекта и манифест
  2. Активности и жизненный цикл
  3. Макеты и представления
  4. Обработка ввода пользователя
  5. Намерения и навигация
  6. Фрагменты
  7. Разрешения и запросы во время выполнения
← Назад к Android Academy