AndroidAppUpdater
Introduction: Android App Updater [ specially for Iranian App Markets]
Tags:
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.
🚀 Installation
Step 1: Add JitPack Repository
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" )
}
}
Step 2: Add Dependencies
// For DialogFragment integration
implementation("com.github.SirLordPouya.AndroidAppUpdater:main:latest_version")
// For Jetpack Compose integration
implementation("com.github.SirLordPouya.AndroidAppUpdater:compose:latest_version")
🎯 Supported App Stores
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 |
📌 Usage
Define App Stores
val storesList = listOf(
StoreListItem(
store = StoreFactory.getStore(AppStoreType.GOOGLE_PLAY, "YOUR_APP_PACKAGE"),
title = "Google Play",
icon = R.drawable.appupdater_ic_google_play
)
)
Default Store Icons
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 a Direct Download Link
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"
)
)
Show the Update Dialog
✅ With Jetpack Compose
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
)
)
}
✅ With Fragments
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")
🎨 Customization
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>
📝 License
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