0Pricing
Android Academy · レッスン

Intentとナビゲーション

明示的なIntentでActivity間を移動し、putExtra/getExtraでデータを渡し、暗黙的なIntentで外部アプリを起動します。

「Intentとナビゲーション」はCoddyKit上の無料Android Academyレッスンです。 これはレッスン5/7です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAndroid Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Android Academyコースには全7レッスンが含まれています。

Intentとは

Intentは、Androidに何かを実行するよう伝えるメッセージです。

  • Explicit Intent — アプリ内の特定のActivityを起動します
  • Implicit Intent — アクションを処理できるアプリをAndroidに探してもらいます(URLを開く、番号に電話をかける、テキストを共有するなど)

Intentは、Activity同士が通信するための主な方法です。

Explicit 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からデータを送り、次の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
    }
}

Implicit Intent

Implicit Intentを使うと、処理を担当するアプリを指定せずに、インストール済みの他のアプリの機能を利用できます。

  • ブラウザでWeb URLを開く
  • 電話番号に発信する
  • メールを送信する
  • 任意のアプリにテキストを共有する

複数のアプリがIntentを処理できる場合、Androidは選択画面を表示します。

よく使うImplicit Intent

Implicit 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でlauncherを登録する
  • 必要なときに起動する
  • callbackで結果を処理する

これは、以前の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です。プッシュ通知やマーケティング用リンクに便利です。

AndroidManifest.xmlで、URLのスキームとホストを指定するdataタグを含むintent-filterを使ってディープリンクを宣言します。

クイックチェック

ユーザーのブラウザでWebサイトを開くには、どの種類のIntentを使用しますか?

復習:Intentとナビゲーション

これで画面間を移動し、システム機能を起動できるようになりました。

  • Explicit Intent — アプリ内の特定のActivityを起動します
  • putExtra/getExtra — Activity間でデータを渡します
  • Implicit Intent — URLを開く、番号に発信する、コンテンツを共有するなどの操作を行います
  • Activity Result API — 別のActivityからデータを受け取ります

次は、RecyclerViewを使って動的なリストを表示します。

よくある質問

「Intentとナビゲーション」レッスンは無料ですか?

はい。「Intentとナビゲーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Android Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Android Academyコースには全7レッスンが含まれています。

「Intentとナビゲーション」で何を学びますか?

明示的なIntentでActivity間を移動し、putExtra/getExtraでデータを渡し、暗黙的なIntentで外部アプリを起動します。 ブラウザで直接実行するハンズオンコードでAndroid Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Android Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAndroid Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン5/7です。

「Intentとナビゲーション」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAndroid Academyレッスンでコードを書いて実行できますか?

はい。すべてのAndroid Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. プロジェクト構成とマニフェスト
  2. アクティビティとライフサイクル
  3. レイアウトとビュー
  4. ユーザー入力の処理
  5. Intentとナビゲーション
  6. フラグメント
  7. 権限と実行時リクエスト
← Android Academyに戻る