Intent là object "yêu cầu" gửi cho hệ thống để khởi động một component: mở Activity, chạy Service, gửi broadcast. Có hai loại:
- Explicit intent: chỉ rõ component đích — thường dùng trong nội bộ app.
- Implicit intent: chỉ khai báo hành động (
ACTION_VIEW,ACTION_SEND) và dữ liệu; hệ thống tìm app cóintent-filterphù hợp, có thể hiện hộp chọn app.
kotlin
// Explicit: mở màn chi tiết trong app
startActivity(Intent(this, DetailActivity::class.java).putExtra("id", 12))
// Implicit: nhờ app khác mở link
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://example.com")))Dữ liệu đi kèm nằm trong extras (một Bundle) — chỉ nên là giá trị nhỏ như id, vì Bundle bị giới hạn kích thước (khoảng 1MB cho cả transaction, vượt quá sẽ gặp TransactionTooLargeException).
Lưu ý: từ Android 12, component có intent-filter phải khai báo rõ android:exported, và PendingIntent phải ghi rõ FLAG_IMMUTABLE hoặc FLAG_MUTABLE. Từ Android 11, muốn kiểm tra app khác có xử lý được intent hay không (resolveActivity) phải khai báo <queries> trong manifest (package visibility).