250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- CustomScrollView
- TEST
- textfield
- viewmodel
- intent
- 앱
- Flutter
- LifeCycle
- Coroutines
- 테스트
- Dialog
- binding
- livedata
- appbar
- tabbar
- 앱바
- DART
- Compose
- drift
- Navigation
- 안드로이드
- Kotlin
- ScrollView
- data
- textview
- 계측
- android
- activity
- scroll
- Button
Archives
- Today
- Total
Study Record
[안드로이드] 암시적 인텐트(implicit intent) 사용해보기 본문
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)
}
}
728x90
'안드로이드' 카테고리의 다른 글
[안드로이드] Activity 라이프사이클(lifeCycle) 살펴보기 (0) | 2023.06.29 |
---|---|
[안드로이드] Application Class (0) | 2023.06.28 |
[안드로이드] Intent 살펴보기 (0) | 2023.06.27 |
[안드로이드] Navigation 을 이용한 Fragment 데이터 전달, Safe Arg (0) | 2023.06.27 |
[안드로이드] 앱바 Menu 추가하기 (+ Navigation) , drawer (0) | 2023.06.25 |