-
[안드로이드] 명시적/암시적 인텐트카테고리 없음 2024. 3. 19. 20:58
인텐트란?
메시지 객체이고, 이것을 사용하여 다른 앱으로 작업을 요청하여 결과를 전달받을 수 있다.
인텐트 종류에는 두가지가 있는데 명시적 인텐트와 암시적 인텐트가 있다.
명시적 인텐트
특정한 컴포넌트를 직접적으로 호출할 때 사용된다.
(새로운 액티비티를 실행하기 위해 사용된다.)
class MainActivity : AppCompactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // TestActivity를 지정하여 액티비티를 띄운다. val intent = Intent(this, TestActivity::class.java) startActivity(intent) } } class TestActivity() : AppCompactActivity() { ... }
암시적 인텐트
특정한 컴포넌트를 명시하지 않고 일반적인 작업을 설정하여 실행하기 위해 사용된다.
안드로이드에서 해당 인텐트를 처리할 수 있는 모든 앱을 검색하여 찾아 실행시킨다.
(본인의 앱을 다른 앱에서 실행되게 하고 싶다면 인텐트 필터를 걸어서 다른 앱에게 알릴 수 있다.)
(MainActivity가 ACTION_DIAL(암시적 인텐트)를 수신하도록 하면 다른 앱에서 전화 기능이 필요할 때 본인의 앱이 뜰 것이다.)
class MainActivity : AppCompactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 전화번호 입력 창을 실행시킨다. val intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:114")) startActivity(intent) } }