Android Studio Intent

박재원·2023년 12월 22일
0

TIL

목록 보기
19/50
post-thumbnail

자기소개 앱을 구현하다가 intent라는 기능을 썼는데 명시적, 암시적 인텐트라는 것이 나뉘어 있어서 이 개념에 대해 정리하려고 한다.

Intent

  • 안드로이드 런타임에서 메시지를 주고받아 앱 구성요소로 부터 작업을 요청하는데 사용되는 일종의 메시지 객체이다.
  • 앱이 처음 시작되면 안드로이드 런타임은 Intent를 AndroidMenifest.xml에 정의된 앱의 MainActivity에 전달한다.

명시적 인텐트(Explicit Intent)

  • 의도가 명확할 때 사용한다.
  • 호출할 대상이 확실하여, 액티비티가 명확하게 실행되어야할 경우 사용한다.
  • Package와 Class명을 정확하게 명시
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
val intent = Intent(this, SignInActivity::class.java)
	intent.putExtra("id",id)
    intent.putExtra("password", pw)
    intent.putExtra("name",name)
    startActivity(intent)

암시적 인텐트(Implicit Intent)

  • 호출할 대상이 명확하지 않을 때 사용한다.
  • 인텐트의 의도 맞는 Activity를 찾아서 실행한다.
  • Action, Category, Type 등을 저장한다.

Action

  • 동작을 설명하는 미리 정의된(System) 문자열을 말한다.
    e.g. ACTION_CALL, ACTIOIN_EDIT, ACTION_MAIN, ACTION_VIEW, ACTION_DIAL

Category

  • 액티비티의 분류를 결정한다.
Intent intent = new Intent()
intent.setAction(Intent.ACTION_MAIN)
intent.addCategory(Intent.CATEGORY_APP_CALCULATOR)
startActivity(intent)

데이터 위치

  • 실행할 컴포넌트가 특정 데이터를 필요로 한다면 추가해준다.
  • URL, Path 등의 정보를 URI 클래스를 사용해 제공해줄 수 있다.
intent.setAction(Intent.ACTION_VIEW)
intent.setData(Uri.parse("http://m.naver.com"))

데이터 타입

  • 대개 자동으로 데이터 판별가능. 지정시 자동판별이 안된다.
  • MP3, WAV 등과 같은 다양한 포맷을 지정해줄 수 있다.
  • text/html, video/mpeg, image/jpeg, audio/x-wav 등 WEB에서 사용하는것과 같은 MIME를 사용한다.
intent.setAction(Intent.ACTION_VIEW)
String audioPath = "file:///" + Environment.getExternalStorageDirectory() + "/sample_mp3.mp3"
intent.setDataAndType(Uri.parse(audioPath), "audio/*")
intent.setData(Uri.parse(audioPath))
intent.setType("audio/*")

0개의 댓글