티스토리 뷰
설정
위젯을 만들기 전에 설정이 필요한 경우가 있습니다. 예를 들어 시계 위젯에서 지역을 설정하거나 날씨 위젯에서 지역을 설정하는 작업을 진행할 경우 입니다. 이러한 설정을 Activity를 통해 위젯 초기에 진행하거나 위젯 생성 후 중간에 진행할 수 있습니다.



Activity 생성 및 연결
ACTION_APPWIDGET_CONFIGURE로 Activity가 실행되기 때문에 intent-filter를 추가합니다. (추가 안해도 정상 작동하지만 공식 문서에서는 선언하는 것을 원칙으로 합니다.)
<activity android:name=".ExampleAppWidgetConfigurationActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
</activity>
AppWidgetProviderInfo에 Activity를 연결합니다.
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
...
android:configure="com.example.android.ExampleAppWidgetConfigurationActivity"
... >
</appwidget-provider>
위 두 작업을 끝내면 위젯을 추가할 때 Activity가 실행됩니다.
위젯 설정
위젯 설정을 성공적으로 마쳤다는 응답을 AppWidgetManager에게 전달해야 성공적으로 위젯이 생성됩니다.
AppWidgetId 가져오기
Activity에서 Intent를 통해 가져올 수 있습니다. Key값으로 AppWidgetManager.EXTRA_APPWIDGET_ID를 사용하면 됩니다.
val appWidgetId = intent.getIntExtra(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID
)
위젯 업데이트하기
Configure Activity가 종료될 때 onUpdate가 호출되지 않기 때문에, 위젯 업데이트를 수동으로 해야 합니다.
val appWidgetManager = AppWidgetManager.getInstance(context)
val views = RemoteViews(context.packageName, R.layout.example_appwidget)
appWidgetManager.updateAppWidget(appWidgetId, views)
Result 내보내기
setResult를 통해 성공적으로 위젯을 설정했다고 응답합니다.
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
setResult(Activity.RESULT_OK, resultValue)
finish()
설정 옵션
위젯을 여러번 설정하는 경우나 위젯을 앱에서 직접 추가하는 경우가 있을 수도 있습니다. 이러한 설정을 AppWidgetProviderInfo를 통해 진행할 수 있습니다.
- WIDGET_FEATURE_CONFIGURATION_OPTIONAL : 기본 값 입니다. configure이 설정됐으면 위젯을 추가할 때 자동으로 Activity가 실행됩니다.
- WIDGET_FEATURE_HIDE_FROM_PICKER : 위젯 목록에는 보이지 않지만 앱에서 직접 위젯을 추가할 수 있습니다.
- WIDGET_FEATURE_RECONFIGURABLE : 위젯을 여러번 설정할 수 있습니다. 해당 옵션을 설정한 경우 아래와 같이 위젯의 크기를 수정할 때 설정 버튼이 생깁니다.

WIDGET_FEATURE_RECONFIGURABLE
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable">
</appwidget-provider>
Git (예제 코드)
https://github.com/KangTaeJong98/TaeTae98
GitHub - KangTaeJong98/TaeTae98: Study Repository
Study Repository. Contribute to KangTaeJong98/TaeTae98 development by creating an account on GitHub.
github.com
'Android > Widget' 카테고리의 다른 글
| Android Widget - 위젯 Collection (0) | 2021.12.03 |
|---|---|
| Android Widget - 위젯 이벤트 (0) | 2021.12.02 |
| Android Widget - 위젯 생성 (0) | 2021.12.02 |
- Total
- Today
- Yesterday
- 보이스카우트 규칙
- ConcatAdapter.Config
- commit
- viewmodel
- ConcatAdapter
- Kotlin
- gradle
- 함수
- 클린 코드
- Widget
- git
- CancellationException
- DSL
- TDD
- 클린코드
- 코루틴
- ViewModelStoreOwner
- Exception
- 연산자
- DART
- Coroutine
- rxjava
- Android
- Flowable
- clean code
- Flutter
- observable
- null
- ViewModelProvider
- isActive
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
