intent.putExtra() 사용 val intent: Intent = Intent(this, DetailActivity::class.java)
// 정보 담기
intent.putExtra("data1", "HELLO")
intent.putExtra("data2", "BYE")
startActivity(intent)
startActivity(인텐트)startActivityForResult() (지금은 잘 사용 X) startActivityForResult(intent,10)
// 메인에 돌려보낼 정보 세팅
intent.putExtra("resultData","world")
// ResultCode 세팅
setResult(RESULT_OK, intent)
finish()
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?){
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 10 && resultCode == Activity.RESULT_OK){
val result = data?.getStringExtra("resultData")
}
}
ActivityResultLauncherActivityResultLauncher로 사후 처리 하는 방법 val requestLauncher: ActivityResultLauncher<Intent> = registerForActivityResult(
ActivityResultContracts.StartActivityForResult())
{
val resultData = it.data?getStringExtra("result")
binding.mainResultView.text = "result : $resultData"
}
val intent: Intent = Intent(this, DetailActivity::class.java)
requestLauncher.launch(intent)
Permission
registerForActivityResult 권한 체크에도 사용할 수 있다.
- contracts 부분이 startActivity가 아니라 requestPermissions으로 사용!
private val cameraResultLauncher : ActivityResultLauncher<String> = // 버튼을 누르면 권한 요청을 줄 메소드 registerForActivityResult( ActivityResultContracts.RequestPermission()) { // 대화상자로 권한을 요청한다. isGranted -> // boolean으로 권한이 승인 되었는지 확인한다. if(isGranted) { Toast.makeText(this, "카메라 권한 승인", Toast.LENGTH_LONG).show() } else { Toast.makeText(this, "카메라 권한 거절", Toast.LENGTH_LONG).show() } }
val intent: Intent = Intent(this, DetailActivity::class.java)
<activity android:name=".TwoActivity"
android:exported="true">
<intent-filter>
<action android:name="ACTION_EDIT"/>
</intent-filter>
</activity>
<action>(VIEW, DIAL 등), <category>(BROWSABLE, APP_CACULATOR 등), <data>(실행될 컴포넌트가 필요로 하는 데이터 위치, uri로 저장) 태그를 이용해 정보를 설정할 수 있음 val intent = intent()
intent.action = "ACTION_EDIT"
intent.data = Uri.parse("http://www.google.com")
// 인텐트에 카테고리 정보 지정하지 않으면 DEFALUT로 감
startActivity(intent)