Android App Updater is a powerful and flexible library to display an update dialog in your Android app. It supports multiple app stores and direct APK download links. Use it easily with DialogFragment or Jetpack Compose.
Add the following to your project’s build.gradle.kts:
allprojects {
repositories {
maven("https://jitpack.io")
}
}
Or to your project’s settings.gradle.kts:
dependencyResolutionManagement {
repositories {
maven ( url = "https://jitpack.io" )
}
}
// For DialogFragment integration
implementation("com.github.SirLordPouya.AndroidAppUpdater:main:latest_version")
// For Jetpack Compose integration
implementation("com.github.SirLordPouya.AndroidAppUpdater:compose:latest_version")
Store | Enum |
---|---|
Google Play | AppStoreType.GOOGLE_PLAY |
Huawei App Gallery | AppStoreType.HUAWEI_APP_GALLERY |
Samsung Galaxy Store | AppStoreType.SAMSUNG_GALAXY_STORE |
Amazon App Store | AppStoreType.AMAZON_APP_STORE |
Xiaomi GetApp Market | AppStoreType.MI_GET_APP_STORE |
Oppo App Market | AppStoreType.OPPO_APP_MARKET |
F-Droid | AppStoreType.FDROID |
Aptoide | AppStoreType.APTOIDE |
OneStore | AppStoreType.ONE_STORE_APP_MARKET |
Vivo V-AppStore | AppStoreType.V_APP_STORE |
9-Apps Market | AppStoreType.NINE_APPS_STORE |
ZTE App Center | AppStoreType.ZTE_APP_CENTER |
Lenovo App Center | AppStoreType.LENOVO_APP_CENTER |
Tencent App Store | AppStoreType.TENCENT_APPS_STORE |
Cafe Bazaar | AppStoreType.CAFE_BAZAAR |
Myket | AppStoreType.MYKET |
val storesList = listOf(
StoreListItem(
store = StoreFactory.getStore(AppStoreType.GOOGLE_PLAY, "YOUR_APP_PACKAGE"),
title = "Google Play",
icon = R.drawable.appupdater_ic_google_play
)
)
All supported store icons are available in the library. You can use them directly:
Market Name | Icon Resource |
---|---|
Google Play | R.drawable.appupdater_ic_google_play |
Huawei App Gallery | R.drawable.appupdater_ic_app_gallery |
Samsung Galaxy Store | R.drawable.appupdater_ic_galaxy_store |
Amazon App Store | R.drawable.appupdater_ic_amazon_app_store |
Xiaomi GetApp Store | R.drawable.appupdater_ic_get_app_store |
Oppo App Market | R.drawable.appupdater_ic_oppo_app_market |
F-Droid App Store | R.drawable.appupdater_ic_fdroid |
Aptoide App Store | R.drawable.appupdater_ic_aptoide |
OneStore App Market | R.drawable.appupdater_ic_one_store |
Vivo V-AppStore | R.drawable.appupdater_ic_v_app_store |
9-Apps Market | R.drawable.appupdater_ic_nine_apps |
ZTE App Center | R.drawable.appupdater_ic_zte_app_center |
Lenovo App Center | R.drawable.appupdater_ic_lenovo_app_center |
Tencent App Store | R.drawable.appupdater_ic_tencent_app_store |
Cafe Bazaar Store | R.drawable.appupdater_ic_bazar |
Myket App Store | R.drawable.appupdater_ic_myket |
👉 Note: Make sure to import:
import com.pouyaheydari.appupdater.R.*
Add the required permissions to your AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
Then create the download link:
val directDownloadLinksList = listOf(
DirectDownloadListItem(
title = "Direct Download",
url = "https://example.com/app.apk"
)
)
var shouldShowDialog by remember { mutableStateOf(true) }
if (shouldShowDialog) {
AndroidAppUpdater(
dialogData = UpdaterDialogData(
dialogTitle = "New Update Available",
dialogDescription = "We've fixed bugs and improved performance!",
dividerText = "Or",
storeList = storesList,
directDownloadList = directDownloadLinksList,
onDismissRequested = { shouldShowDialog = false },
errorWhileOpeningStoreCallback = { storeName -> /* Handle error */ },
theme = Theme.LIGHT
)
)
}
val data = UpdaterDialogData(
title = "New Update Available",
description = "We've fixed bugs and improved performance!",
storeList = storesList,
directDownloadList = directDownloadLinksList,
isForceUpdate = false,
errorWhileOpeningStoreCallback = { storeName -> /* Handle error */ },
theme = Theme.SYSTEM_DEFAULT,
)
AppUpdaterDialog.getInstance(data).show(supportFragmentManager, "UPDATE_DIALOG")
You can override default texts in strings.xml
:
<resources>
<string name="appupdater_please_wait">Please wait</string>
<string name="appupdater_downloading_new_version">Downloading new version...</string>
<string name="appupdater_download_notification_title">Downloading...</string>
<string name="appupdater_download_notification_description">Downloading new version</string>
<string name="appupdater_please_install">Please install</string>
<string name="appupdater_or">or</string>
<string name="appupdater_download_from_store">Download from store</string>
</resources>
Android App Updater is released under the Apache License 2.0. See LICENSE for details.
Copyright (c) 2018 Pouya Heydari
Library icon and design by Amir Gerdakane