본문 바로가기
안드로이드/Activity

안드로이드 다른 애플리케이션의 액티비티 실행

by 김어찐 2022. 6. 9.
728x90

안드로이드의 4대 구성요소는 모두 AndroidManifest.xml 파일에 기록되어야 한다.
이 때 다른 애플리케이션이 실행할 수 있도록 하고자 한다면 Intent filter를 이용해 이름을 설정해주면 된다.
애플리케이션이 단말기에 설치되면 안드로이드 OS는 지정된 IntentFilter의 이름을 확인하여 정리하고 실행 요청을 받으면 이를 실행할 수 있다.

 

 

 

보조앱 생성

package com.example.activityapp2

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_second.*

class SecondActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        val data1 = intent.getIntExtra("data1",0)
        val data2 = intent.getStringExtra("data2")
        textView.text = "data1 : $data1\n"
        textView.append("data2 : ${data2}")

        button.setOnClickListener {
            val result_intent = Intent()

            result_intent.putExtra("value1",200)
            result_intent.putExtra("value2","문자열2")

            setResult(RESULT_OK,result_intent)

            finish()
        }
    }
}

 

intent-filter 적용 (android:exported="true" 해줘야한다)

메인 앱

package com.example.otheractivity

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    val TEST_ACTIVITY = 0
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        button.setOnClickListener {
            val test_intent = Intent("kr.co.softcampus.test_activity")

            test_intent.putExtra("data1",100)
            test_intent.putExtra("data2","문자열1")

            startActivityForResult(test_intent,TEST_ACTIVITY)
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        if (requestCode == TEST_ACTIVITY) {
            if (resultCode == RESULT_OK) {
                val value1 = data?.getIntExtra("value1",0)
                val value2 = data?.getStringExtra("value2")
                textView.text = "value1 : $value1\n"
                textView.append("value2 : ${value2}")
            }
        }
    }
}
728x90