Android Make a Widget with Button events
사용 언어: Kotlin 1.4.30
사용 버전: Android Studio 4.1.2
저번 시간에는 버튼을 넣기만 하고 클릭 이벤트를 추가하지 않았습니다. 이번에는 클릭 이벤트를 추가해보도록 하겠습니다.
사용 버전: Android Studio 4.1.2
안드로이드 Make a Widget with Button events를 해보겠습니다.
저번 시간에는 버튼을 넣기만 하고 클릭 이벤트를 추가하지 않았습니다. 이번에는 클릭 이벤트를 추가해보도록 하겠습니다.
버튼을 하나 더 추가해 줍니다.
my_app_widget.xml로 갑니다.
이렇게 만들었습니다.
버튼 이벤트로 할 수 있는 것은 두 가지 정도 있습니다.
하나는 Broadcast를 보내는 것과 다른 하나는 PendingIntent를 불러오는
것입니다.
Widget receiver가 받는 Broadcast를 보내면 Widget의 정보를 업데이트할 수
있고, PendingIntent는 앱의 특정 화면이 열리게 만들 수 있습니다.
이번 시간에는 버튼 1을 누르면 Morning이라는 글자가 'Clicked!'으로 변경되는
것과 버튼 2를 누르면 앱이 열리도록 만들겠습니다.
MyAppWidget.kt 파일로 갑니다.
Widget의 경우 일반 Layout처럼 findViewbyId로 버튼을 찾을 수 없습니다.
이유는 RemoteViews를 사용하기 때문입니다.
버튼 1 이벤트부터 추가해보겠습니다.
MyAppWidget에 companion object를 추가합니다.
BUTTON1_CLICK과 REQUEST_CODE_WIDGET을 추가합니다.
BUTTON1_CLICK은 버튼이 클릭 됐을 때 어떤 버튼인지 구분하기 위해 필요한
것이고, REQUEST_CODE_WIDGET은 PendingIntet를 만들 때 필요합니다.
REQUEST_CODE_WIDGET_LAUNCH_ACTIVITY는 LaunchActivity PendingIntent를 만들
때 필요합니다.
MyAppWidget 안에 getPendingSelfIntent 함수를 만듭니다.
updateAppWidget 함수로 가서 setOnClickPendingIntent를 사용하여 다음과 같이
버튼 1에 클릭 이벤트를 설정합니다.
MyAppWidget에 onReceive를 override 합니다.
다음과 같이 정의합니다.
intent?.action에서 BUTTON1_CLICK 이면 Widget의 leftText를
setTextViewText를 사용하여 Clicked!로 변경하도록 만들었습니다.
그리고, appWidgetManager.updateAppWidget()을 사용하여 Widget의 변경 사항이
반영되도록 만들었습니다.
실행해 봅시다.
버튼을 누르면 Clicked!로 변경된 것을 확인할 수 있습니다.
버튼 2의 기능을 넣어봅시다.
updateAppWidget에 button2Intent를 만듭니다.
그리고 PendingIntent를 만들고 setOnClickPendingIntent를 사용합니다.
실행해 봅시다.
버튼 2를 누르자 앱이 실행되는 것을 확인할 수 있습니다.
끝.
카테고리: Android
댓글
댓글 쓰기
궁금한 점은 댓글 달아주세요.
Comment if you have any questions.