[Android ๊ธฐ์ดˆ] 8. Intent์˜ ๊ฐœ๋…๊ณผ ์ข…๋ฅ˜(๋ช…์‹œ/์•”์‹œ), ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
๋ฐ˜์‘ํ˜•

 

 

 

 

 

์ธํ…ํŠธ (Intent)

 

 

 

  • ์ธํ…ํŠธ(Intent)๋Š” ์ผ์ข…์˜ ๋ฉ”์‹œ์ง€ ๊ฐ์ฒด
  • ์ธํ…ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค๋ฅธ ์•ฑ ๊ตฌ์„ฑ์š”์†Œ(์•กํ‹ฐ๋น„ํ‹ฐ, ์„œ๋น„์Šค, ๋ธŒ๋กœ๋“œ ์บ์ŠคํŠธ๋ฆฌ์‹œ๋ฒ„)๋กœ ์ž‘์—…์„ ์š”์ฒญ

 

 

 

 

์ธํ…ํŠธ ์œ ํ˜•

 

1) ๋ช…์‹œ์  ์ธํ…ํŠธ(Explicit Intent)

  • ํŠน์ •ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง์ ‘์ ์œผ๋กœ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ธํ…ํŠธ
  • ๊ฐœ๋ฐœ์ž๋Š” ์ธํ…ํŠธ ๊ฐ์ฒด์— ์‹œ์ž‘ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ด๋ฆ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค์ •ํ•˜๊ณ 
    startActivity() ๋˜๋Š” startService() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹คํ–‰
  • ์ฃผ๋กœ ์•ฑ ๋‚ด๋ถ€์—์„œ ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ๋‚˜ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉ
    (์˜ˆ) ๋ฉ”์ธ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์•„ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์ƒˆ๋กœ์šด ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋„์šธ ๋•Œ

 

2) ์•”์‹œ์  ์ธํ…ํŠธ(Implicit Intent)

 

 

  • ๋ช…์‹œ์ ์œผ๋กœ ํŠน์ •ํ•œ ์ปดํฌ๋„ŒํŠธ(์˜ˆ: ์•กํ‹ฐ๋น„ํ‹ฐ, ์„œ๋น„์Šค, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฆฌ์‹œ๋ฒ„)๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ , ์‹œ์Šคํ…œ์— ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์ธํ…ํŠธ (์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์ผ๋ฐ˜ ์ž‘์—…์„ ์ธํ…ํŠธ ๊ฐ์ฒด์— ์„ค์ •ํ•˜์—ฌ startActivity() ๋ฉ”์†Œ๋“œ์— ๋„˜๊น€)
  • ๋ชฉ์ ์ง€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋Œ€์‹ , ์ž‘์—…์— ๋Œ€ํ•œ ์•ก์…˜(action)๊ณผ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ(๋ฐ์ดํ„ฐ URI, MIME ํƒ€์ž… ๋“ฑ)๋ฅผ ์ง€์ •
  • ์‹œ์Šคํ…œ์€ ์ด ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด๋‹น ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ(์ ํ•ฉํ•œ ์ธํ…ํŠธ ํ•„ํ„ฐ๋ฅผ ๊ฐ€์ง„ ์ปดํฌ๋„ŒํŠธ)๋“ค์„ ์ฐพ์•„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์„ ํ‘œ์‹œ
  • ์ธํ…ํŠธ ํ•„ํ„ฐ
        - ์ธํ…ํŠธ ํ•„ํ„ฐ๋Š” ํŠน์ • ์ธํ…ํŠธ์— ๋ฐ˜์‘ํ•˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ, ์„œ๋น„์Šค ๋˜๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฆฌ์‹œ๋ฒ„์˜ ๋Šฅ๋ ฅ์„ ์ •์˜
        - ์–ด๋–ค ์ธํ…ํŠธ๋ฅผ ์ˆ˜์‹ ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์„ค์ •
  • ์ฃผ๋กœ ๋‹ค๋ฅธ ์•ฑ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉ
    (์˜ˆ) ์‚ฌ์šฉ์ž๊ฐ€ '์ง€๋„ ๋ณด๊ธฐ'๋ฅผ ์š”์ฒญํ•  ๋•Œ, ํ•ด๋‹น ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์•ฑ ์ค‘ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ์ด ๋ชฉ๋ก์„ ์ œ๊ณต

 

 

 

์ธํ…ํŠธ ๊ฐ์ฒด ๋ถ„์„

 

1) ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ (Component Name)

  • new Intent(context, TargetActivity.class) ์—์„œ TargetActivity.class
  • ํƒ€๊ฒŸ ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฆ„์„ ๋ช…์‹œํ•˜์—ฌ, ์ธํ…ํŠธ๊ฐ€ ์ „๋‹ฌ๋  ์ •ํ™•ํ•œ ๋Œ€์ƒ์„ ์ง€์ •
  • ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์ด ์—†์œผ๋ฉด, ์ธํ…ํŠธ๋Š” ์•”์‹œ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ณ , ์‹œ์Šคํ…œ์ด ์ ์ ˆํ•œ ๋Œ€์ƒ์„ ์ฐพ์Œ

 

2) ์•ก์…˜ (Action)

  • ์ธํ…ํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ผ๋ฐ˜์ ์ธ ์ž‘์—…์„ ์ •์˜
  • (์˜ˆ) Intent.ACTION_VIEW๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ค„ ๋•Œ ์‚ฌ์šฉ
           Intent.ACTION_DIAL์€ ์ „ํ™” ๋‹ค์ด์–ผ์„ ์—ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

 

3) ๋ฐ์ดํ„ฐ (Data)

  • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์˜ URI๋ฅผ ์ง€์ •
  • ๋ฐ์ดํ„ฐ๋Š” ๋ณดํ†ต 'Uri' ๊ฐ์ฒด๋กœ ์•ก์…˜๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ
  • (์˜ˆ) Uri.parse("tel:12345")๋Š” ์ „ํ™” ์•ฑ์— ์ „ํ™”๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณต

 

4) ์นดํ…Œ๊ณ ๋ฆฌ (Category)

  • ์ธํ…ํŠธ์˜ ์œ ํ˜•์„ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์ง€์ •ํ•˜์—ฌ, ์–ด๋–ค ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์คŒ
  • (์˜ˆ) Intent.CATEGORY_HOME์€ ํ™ˆ ํ™”๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉ

 

5) ์—‘์ŠคํŠธ๋ผ (Extras)

  • ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ธํ…ํŠธ์— ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค-๊ฐ’ ์Œ์˜ ์ถ”๊ฐ€ ์ •๋ณด
  • ์—‘์ŠคํŠธ๋ผ๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ ํƒ€์ž…๋ถ€ํ„ฐ Serializable ๊ฐ์ฒด๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ
  • (์˜ˆ) intent.putExtra("extra_key", "value") : "extra_key"๋Š” ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ์˜ ํ‚ค, "value"๋Š” ์‹ค์ œ ๊ฐ’

 

 

 

 

๋ช…์‹œ์  ์ธํ…ํŠธ๋กœ ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ ์‹œ์ž‘

 

val intent = Intent(this, AnotherActivity::class.java)
// ํ˜„์žฌ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ AnotherActivity๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…์‹œ์  ์ธํ…ํŠธ ์ƒ์„ฑ

intent.putExtra("key", "value")
// ์ธํ…ํŠธ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ (์˜ต์…˜)

startActivity(intent)
// AnotherActivity ์‹œ์ž‘

 

  • ๋ช…์‹œ์  ์ธํ…ํŠธ(Explicit Intent)๋Š” ํŠน์ •ํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉ (ํ˜„์žฌ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ๋กœ ์ „ํ™˜)
  • 1. ์ธํ…ํŠธ ์ƒ์„ฑ
    - Intent ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ
    - ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ˜„์žฌ ์ปจํ…์ŠคํŠธ(this)๋ฅผ, ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์‹œ์ž‘ํ•˜๊ณ ์ž ํ•˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ์˜ class ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ
    - ์ธํ…ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ::class.java๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์š”๊ตฌ์‚ฌํ•ญ ๋•Œ๋ฌธ์ด๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ง€์ •ํ•  ๋•Œ Java์˜ .class ํ‘œํ˜„์‹์ด ํ•„์š”ํ•œ๋ฐ, Kotlin์€ Java์™€ ํ˜ธํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ::class.java๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ํด๋ž˜์Šค ๋Ÿฐํƒ€์ž„ ํ‘œํ˜„์„ ์–ป๋Š”๋‹ค.
  • (์„ ํƒ) 2. ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
    - putExtra() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ…ํŠธ์— ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Œ
    - ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์‹œ์ž‘๋  ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • 3. ์•กํ‹ฐ๋น„ํ‹ฐ ์‹œ์ž‘
    - startActivity ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ธํ…ํŠธ๋ฅผ ์‚ฌ์šฉ
    - ์ด ํ˜ธ์ถœ์ด ์‹คํ–‰๋˜๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ์€ ๋ช…์‹œ๋œ ์ธํ…ํŠธ์— ๋”ฐ๋ผ AnotherActivity๋ฅผ ์‹œ์ž‘

 

 

๐Ÿ’ก์‚ฌ์šฉ ์˜ˆ์‹œ

FirstActivity.kt

class FirstActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_first)

        val btn = findViewById<Button>(R.id.buttonFirstActivity)
        btn.setOnClickListener{
            val intent = Intent(this, SecondActivity::class.java)
            startActivity(intent) // ๋ช…์‹œ์  ์ธํ…ํŠธ๋กœ SecondActivity๋กœ ๋„˜๊ธฐ๋Š” ๋ฒ„ํŠผ ์„ค์ •
        }
    }
}
SecondActivity.kt

class SecondActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)

        val btn = findViewById<Button>(R.id.buttonSecondActivity)
        btn.setOnClickListener{
            finish() // SecondActivity ์—์„œ ๋ฒ„ํŠผ์ด ํด๋ฆญ๋˜๋ฉด finish() ๋ฉ”์†Œ๋“œ๋กœ ํ˜„์žฌ ์•กํ‹ฐ๋น„ํ‹ฐ ์ข…๋ฃŒ
        }
    }
}

 

 

 

 

์•”์‹œ์  ์ธํ…ํŠธ๋กœ ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ ์‹œ์ž‘

  • ์ธํ…ํŠธ ์•ˆ์— ์ž‘์—…์— ๋Œ€ํ•œ ์•ก์…˜(action)๊ณผ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ(๋ฐ์ดํ„ฐ URI, MIME ํƒ€์ž… ๋“ฑ)๋ฅผ ์ง€์ •
  • (์˜ˆ) 114 ๋ฒˆํ˜ธ๋กœ ๋‹ค์ด์–ผ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
    val call_intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:114"))
    startActivity(call_intent)
    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธํ…ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ startActivity() ๋ฉ”์†Œ๋“œ์— ์ „๋‹ฌ

 

๐Ÿ’ก์‚ฌ์šฉ ์˜ˆ์‹œ

activity_first.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ...>

    <TextView
        ... />

    <Button
        ... />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="๋‹ค์ด์–ผ ์ž‘์—… ์‹œ์ž‘ํ•˜๊ธฐ"
        android:id="@+id/buttonDialActivity"
        android:onClick="doOnBtnClick" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="์ง€๋„๋ณด๊ธฐ ์ž‘์—… ์‹œ์ž‘ํ•˜๊ธฐ"
        android:id="@+id/buttonMapActivity"
        android:onClick="doOnBtnClick" />

</LinearLayout>
FirstActivity.kt

class FirstActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
    }

    // ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
    // @param view : ํด๋ฆญ๋œ ๋ฒ„ํŠผ ๊ฐ์ฒด
    // ํด๋ฆญ๋œ ๋ฒ„ํŠผ ๊ฐ์ฒด๊ฐ€ ๋ฌด์—‡์ธ์ง€๋ฅผ id๋ฅผ ํ†ตํ•ด ์ธ์ง€ํ•˜์—ฌ, ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ธํ…ํŠธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
   
    fun doOnBtnClick(view: View) {
        when (view.getId()) {
            R.id.buttonDialActivity -> { // 114 ์ „ํ™”๋ฒˆํ˜ธ๋กœ ๋‹ค์ด์–ผ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
                val call_intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:114"))
                startActivity(call_intent)
            }
            R.id.buttonMapActivity -> { // ์ฃผ์–ด์ง„ ์œ„๋„,๊ฒฝ๋„ ์œ„์น˜๋กœ ์ง€๋„๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
                val map_intent = Intent(Intent.ACTION_VIEW, Uri.parse("geo:37.565350, 127.01445"))
                startActivity(map_intent)
            }
        }
    }

}

 

 

 

 

์•”์‹œ์  ์ธํ…ํŠธ ์ˆ˜์‹ (์ธํ…ํŠธ ํ•„ํ„ฐ)

 

AndroidManifest.xml

<activity android:name=".MainActivity"> 
    <intent-filter>    // ์•กํ‹ฐ๋น„ํ‹ฐ ์•ˆ์— ์ธํ…ํŠธ ํ•„ํ„ฐ ์ถ”๊ฐ€
        <action android:name="android.intent.action.DIAL" />  // ๋‹ค์ด์–ผ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ์„ ์„ ํƒ
        <category android:name="android.intent.category.DEFAULT" /> 
        <data android:scheme="tel" />
    </intent-filter>
</activity>

MainActivity๊ฐ€ ACTION_VIEW ์•ก์…˜์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
๋˜ํ•œ, http ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ์„ ์ง€์ •

 

  • ์ธํ…ํŠธ ํ•„ํ„ฐ(Intent Filter)
    - ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์ด ํŠน์ •ํ•œ ์•ก์…˜(action)์ด๋‚˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‹œ์Šคํ…œ์— ์•Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•
    - ๋‹ค์‹œ ๋งํ•ด, ์•ฑ์ด ๋‹ค๋ฅธ ์•ฑ์œผ๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ์•”์‹œ์  ์ธํ…ํŠธ๋ฅผ ๋ฐ›์„ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ„
    - AndroidManifest.xml ํŒŒ์ผ์— ์„ ์–ธ
    - <intent-filter> ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์•ฑ์ด ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ…ํŠธ ์œ ํ˜•์„ ์ง€์ • (action, data, category ๋“ฑ)
    -  ๋‹ค๋ฅธ ์•ฑ์ด ๋ณด๋‚ธ ์ธํ…ํŠธ๋ฅผ ํ•ด๋‹น ์•ฑ์ด ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
  • ์ธํ…ํŠธ ํ•„ํ„ฐ๋ฅผ ์„ ์–ธํ•˜๋ฉด ํ•ด๋‹น ์•ฑ์ด ํŠน์ • ์•ก์…˜์— ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ํŽ˜์ด์ง€๋ฅผ ์—ด๊ธฐ ์œ„ํ•œ ์ธํ…ํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์•ก์…˜(ACTION_VIEW)์„ ์„ ์–ธํ•˜๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์œ ํ˜•(data)์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ ์ธํ…ํŠธ ํ•„ํ„ฐ๊ฐ€ ์ธํ…ํŠธ์˜ ์ž‘์—…, ๋ฐ์ดํ„ฐ ๋ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๊ทผ๊ฑฐ๋กœ ์–ด๋Š ์œ ํ˜•์˜ ์ธํ…ํŠธ๋ฅผ ์ˆ˜์‹ ํ•  ์ง€ ๊ฒฐ์ •

 

 

 

 


 


    

์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ

 

 

  • ์ธํ…ํŠธ์— ์ปดํฌ๋„ŒํŠธ ์‹คํ–‰์„ ์š”์ฒญํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌํ•˜๋ ค๋ฉด ์—‘์ŠคํŠธ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉ
  • ์—‘์ŠคํŠธ๋ผ ๋ฐ์ดํ„ฐ = ์ธํ…ํŠธ์— ๋‹ด๋Š” ๋ถ€๊ฐ€ ์ •๋ณด
  • Extras๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ์Œ์œผ๋กœ๋œ ์ •๋ณด๋ฅผ ์ „๋‹ฌ

 

Extras์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฉ”์†Œ๋“œ :: putExtra()

  • Intent putExtra("String name", int value)
  • Intent putExtra("String name", String value)
  • Intent putExtra("String name", boolean value)

 

Extras์— ์ €์žฅ๋œ ๊ฐ’์„ ์ฝ๋Š” ๋ฉ”์†Œ๋“œ :: get~Extra()

  • int getIntExtra(String name, int defaultValue)
  • string getStringExtra(String name)
  • boolean getBooleanExtra(String name, boolean defaultValue)

 

 

๐Ÿ’ก์‚ฌ์šฉ ์˜ˆ์‹œ

FirstActivity.kt 
..
        val btn_call3 = findViewById<Button>(R.id.buttonThirdActivity)
        btn_call3.setOnClickListener {            
            val edit_text = findViewById<EditText>(R.id.edit_data)
            val strData = edit_text.text.toString()
            val intent = Intent(this, ThirdActivity::class.java)
            intent.putExtra("dataFromFirstActivity",strData) // putExtra() ์‚ฌ์šฉ
            startActivity(intent)
        }
..



ThridActivity
..
        val strData = intent.getStringExtra("dataFromFirstActivity") //get~Extra() ์‚ฌ์šฉ
        val editText = findViewById<EditText>(R.id.editText)
        editText.setText(strData)

        val btn_close = findViewById<Button>(R.id.buttonThirdActivity)
        btn_close.setOnClickListener{
            finish() // Finish๋กœ ์ด์ „ ์•กํ‹ฐ๋น„ํ‹ฐ์— ๋‹ค์‹œ ๋Œ์•„๊ฐ
        }
..

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•
 ๐Ÿ’ฌ C O M M E N T