Study Record

[안드로이드] 암시적 인텐트(implicit intent) 사용해보기 본문

안드로이드

[안드로이드] 암시적 인텐트(implicit intent) 사용해보기

초코초코초코 2023. 6. 27. 20:50
728x90

😶 암시적 인텐트 사용해보기(ex. 텍스트 공유하기)

private fun getShareIntent() : Intent {
   val shareIntent = Intent(Intent.ACTION_SEND)
   shareIntent.setType("text/plain").putExtra(Intent.EXTRA_TEXT, "공유 테스트")
   return shareIntent
}

Intent.ACTION_SEND 으로 설정하고 putExtra 로 원하는 텍스트를 정의하면 된다.

 

 

startActivity 함수로 실행한다.

startActivity(getShareIntent())

 

 

😶 암시적 인텐트를 사용하기 전 실행 가능한 앱이 있는지 미리 확인하기

해당 암시적 인텐트를 실행하다가 인텐트에 해당하는 인텐트 필터가 포함된 앱을 찾지 못하면 에러가 뜰 수 있다. 따라서 인텐트를 실행하기 전에 resolveActivity() 로 실행 가능한 다른 앱이 있는지 미리 확인하는 것이 좋다.

private fun getShareIntent() : Intent {
   val shareIntent = Intent(Intent.ACTION_SEND)
   shareIntent.setType("text/plain")
            .putExtra(Intent.EXTRA_TEXT, "공유 테스트")
   return shareIntent
}

// 확인 작업
if(getShareIntent().resolveActivity(requireActivity().packageManager)==null){
    // 인텐트 실행 가능한 다른 앱이 존재하지 않는다.
}

 

 

Ex. 😶 인터넷 검색하기

val queryUrl: Uri = Uri.parse("https://www.google.com/search?q=A")
val intent = Intent(Intent.ACTION_VIEW, queryUrl)
context.startActivity(intent)

ACTION_VIEW 타입은 URI 를사용하는 일반적인 intent 이다.

 

* URL , URI , URN

URL(Uniform Resource Locator) : 웹 페이지를 가지키는 문자열(https://naver.com)
URN(Uniform Resource Name) : tel:+1-555-432-4444 와 같은 정보
URI(Uniform Resource Identifier) : URL 과 URN 을 둘 다 포함하는 문자열

 

 

Ex. 😶 이메일 보내기

fun sendOrder(subject: String, content: String) {
        val intent = Intent(Intent.ACTION_SEND)
            .setType("text/plain")
            .putExtra(Intent.EXTRA_SUBJECT, subject)  // title
            .putExtra(Intent.EXTRA_TEXT, content)  // content

        if (activity?.packageManager?.resolveActivity(intent, 0) != null) {
            startActivity(intent)
        }
    }

 

 

다른 앱으로 사용자 보내기  |  Android 개발자  |  Android Developers

특정 작업을 위해 암시적 인텐트를 생성하는 방법과 암시적 인텐트를 사용하여 다른 앱에서 작업을 실행하는 활동을 시작하는 방법을 알아봅니다.

developer.android.com

 

728x90