1. Intent Filter
- 안드로이드의 4대 구성요소는 모두 AndroidManifest.xml파일에 기록되어야 한다.
- 이 때 다른 애플리케이션이 실행할 수 있도록 하고자 한다면 Intent Filter를 이용해 설정해주면 된다.
- Intent Filter를 통해 액티비티의 이름을 등록하면 다른 애플리케이션에서 실행이 가능하다.
2. App1에서 App2띄우기
1. App2의 AndroidMenifest.xml에서 띄우고자 하는 Activity에 intent-filter를 적용해 action, category를 지정해준다.
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="android.intent.action.SECOND" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
2. App1의 button의 람다식에 Intent를 위 intent-filter의 action명을 넣어 startActivity(intent)를 호출해준다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener { view ->
// 1. 안드로이드OS는 자신이 가지고있는 App의 모든 구성요소를 저장하고있기 때문에 가져올 수 있다.
// 다른 어플에서 카카오톡으로 로그인하기 이런 기능들이 모두 이것을 이용해서 하는것이다.
var intent = Intent("android.intent.action.SECOND")
startActivity(intent)
}
}
3. 이를 이용해서 한 기능 다른 어플 선택하기
1. MainApp, TestApp1, TestApp2를 만든다.
2. TestApp1, TestApp2의 Activity의 intent-filter action의 name을 일치시킨다.
APP1
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="android.intent.action.SECOND" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
APP2
<activity android:name=".TestActivity">
<intent-filter>
<action android:name="android.intent.action.SECOND" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
4. 다른 App에 데이터 전달하기
- Intent-filter의 이름이랑 마지막에 StartActivity()만 해주면 같은 app상에서 데이터를 전달하는것과 동일하게 데이터를 전달할 수 있다.
<Main>
val SECOND_ACTIVITY = 1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener { view ->
// 1. 안드로이드OS는 자신이 가지고있는 App의 모든 구성요소를 저장하고있기 때문에 가져올 수 있다.
// 다른 어플에서 카카오톡으로 로그인하기 이런 기능들이 모두 이것을 이용해서 하는것이다.
var intent = Intent("android.intent.action.SECOND")
// 2. 다른 App의 Activity를 실행시킬 때 Data전달하기.
intent.putExtra("data1", 100)
intent.putExtra("data2", 11.11)
startActivityForResult(intent, SECOND_ACTIVITY)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if(resultCode == Activity.RESULT_OK)
{
var data1 = data?.getIntExtra("value1", 0)
var data2 = data?.getDoubleExtra("value2", 0.0)
textView.text = "data1 = ${data1}\n"
textView.append("data2 = ${data2}")
}
}
<APP2>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
var data1 = intent.getIntExtra("data1", 0)
var data2 = intent.getDoubleExtra("data2", 0.0)
textView.text = "data1 = ${data1}"
textView.append("data2 = ${data2}")
button.setOnClickListener { view ->
var intent2 = Intent()
intent2.putExtra("value1", 200)
intent2.putExtra("value2", 22.22)
setResult(Activity.RESULT_OK, intent2)
finish()
}
}
'Deperecated > Android_강의' 카테고리의 다른 글
안드로이드 - BroadCastReceiver (0) | 2020.02.19 |
---|---|
안드로이드 - Activity Action (0) | 2020.02.19 |
안드로이드 - 객체 전달하기 (0) | 2020.02.18 |
안드로이드 - 데이터 전달하기 (0) | 2020.02.18 |
안드로이드 - OnResultActivity (0) | 2020.02.18 |