Android Glance에서 Activity 열기 및 특정 로직 수행 (ActionCallBack, StartActivityIntentAction)

2025. 5. 21. 11:04· Development/Android
목차
  1. 위젯에서 특정 Activity 열기
  2. 위젯에서 특정 onClick 동작 수행하기
반응형

- 안드로이드 Glance에서 특정 화면을 열거나 로직을 수행하기 위해서는 GlanceModifier.onClick()에 Action을 명시해주어야 한다.

 

- Glance의 Action은 UI 요소에 "동작"을 연결하는 역할을 하는 개념이다.

위젯에서 특정 Activity 열기

- 먼저 Glance에서 특정 화면을 열기 위해 ActionIntent는 아래와 같이 사용한다.

modifier = GlanceModifier
    .size(20.dp)
    .clickable(onClick = actionStartActivity(
        Intent(context, WidgetSettingsActivity::class.java).apply {
            data = Uri.parse(KEY_WIDGET)
            flags = Intent.FLAG_ACTIVITY_NEW_TASK
        }
    ))

- Glance에서는 이때 반드시 람다 {} 안에 구성하는 것이 아니라 명시적으로 actionIntent를 onClick과 연결해주어야 한다.

위젯에서 특정 onClick 동작 수행하기

- 다음으로 로컬 DB 데이터 저장 및 데이터 동기화 같이 특정한 동작을 수행하기 위해서 ActionCallBack을 구성해 준다.

object ToggleBlockDoneAction : ActionCallback {
    override suspend fun onAction(
        context: Context,
        glanceId: GlanceId,
        parameters: ActionParameters
    ) {
        val id = parameters[ActionParameters.Key<Long>("block_id")] ?: return
        //TODO anything
    }
}

- Glance는 onClick 이벤트에서 해당 ActionCallback을 비동기적으로 수행하게 된다.

 

- ActionParameters를 통해 해당 Action에서 필요한 값들을 넘겨받을 수도 있다.

val PARAM_BLOCK_ID = ActionParameters.Key<Long>("block_id")

- 위처럼 파라미터 키 값을 선언해 주고, onClick에서 그에 알맞은 Value를 넣어준다.

modifier = GlanceModifier.size(20.dp).clickable(
    onClick = actionRunCallback<ToggleBlockDoneAction>(
        parameters = actionParametersOf(PARAM_BLOCK_ID to block.id)
    )
)

 

반응형
저작자표시 (새창열림)
  1. 위젯에서 특정 Activity 열기
  2. 위젯에서 특정 onClick 동작 수행하기
'Development/Android' 카테고리의 다른 글
  • 외부 웹 사이트에서 내 앱으로 공유 기능 활성화하기 - Intent Sharing
  • Android Glance UI 갱신하는 방법 - PreferencesGlanceStateDefinition
  • Android Glance Widget에서 SizeMode에 관하여 (위젯 크기에 따라 View에 변화 주기)
  • [Android] Kotlin으로 XML View 높이 조절하기
SeungYong.Lee
SeungYong.Lee
반응형
SeungYong.Lee
Win-Dev
SeungYong.Lee
전체
오늘
어제
  • All (235)
    • Development (135)
      • Android (131)
      • iOS (0)
      • Flutter (4)
      • Backend (0)
    • Algorithm (5)
    • Knowledge (5)
      • IT (2)
      • Science (0)
      • ETC & Tip (3)
    • Today I Learn (28)
    • Coding Test (62)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 안녕하세요. 반갑습니다 :)

인기 글

태그

  • compose
  • Collection
  • 코틀린
  • exception
  • Retrofit
  • HTTP
  • Kotlin
  • Imageview
  • Widget
  • hilt
  • 코딩테스트
  • Animation
  • 프로그래머스
  • Flutter
  • Java
  • dfs
  • Android
  • glance
  • coroutine
  • 비동기처리

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
SeungYong.Lee
Android Glance에서 Activity 열기 및 특정 로직 수행 (ActionCallBack, StartActivityIntentAction)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.