A free, open source, third party Android library for notifing the update information about the installed android apps on an android device. The library has built with the Kotlin language. Check out the wiki link.
AndroidAppUpdater is free, open source, third party Android library for notifing update information to installed android apps on android device. By it's help old application gets notified about update information from Google Play Market.
Library has built with Kotlin language on Android Studio IDE
and binaries have added to jcenter()
maven
repository.
You can check jCenter() download statistics on this link
There is a list of application using AndroidAppUpdater. It would be nice if see your app link there too. If you use this library and want to see your app in the start of the list please inform me or send a pull request.
Don't forget to start the protect to support us
- Developer - Main functionality: Sattar Hummatli - LinkedIn, settarxan@gmail.com, Other libs
- Developer - Added new feature:
andrewpros , Thanks!,
New Feature: "Info Resolver"
. Now you can get information from your own formatted service - Translator
Portuguese
: azzarr , Thanks! - Translator
Hindi
: dalwadi2, Thanks! - Translator
German
: Ndam Njoya, Thanks! - Translator
French
: Zeldarck, Thanks!, Has changed sample apps to supportFrench
. - Translator
Greek
: Nikos Linakis, Thanks!.
- Description
- Service structure
- Library structure
- Installation manual
- Help - Issues
- Releases - Upgrade documentation
- To contribute
- Contributors
- Localization
- Applications using MAHAndroidUpdater
- Other libraries by developer
MAHAndroidUpdater - Sample app has published on Google PlayStore. You can easly test module functionality with downloading it.
To provide update information to your app you need to implement service responding json data about application current state. Structure of the json data is as below.
You can provide http://
and https://
services. Library works both of them.
Json with sample data. Link to working sample
{
"is_run_mode":"true",
"name":"MAHUpdater Sample",
"uri_current":"com.mobapphome.mahandroidupdater.sample",
"version_code_current":"2",
"version_code_min":"1",
"update_info":"On version 1.0 we added bla bla",
"update_date":"16/07/2016"
}
is_run_mode
- service mode: if it's false modul will not react to service and will not show dialogsname
- name of the belonging appuri_current
- current package pathversion_code_current
- current version code avilableversion_code_min
- Minimum version code, which does not work normal and had to force to updateupdate_info
- Update informationupdate_date
- Update date
If one of the variables would not be on json, then modul will not repond to service and act, Try to implement all data.
You can check you json validity with this jsonlint.com
There is interface called IUpdateInfoResolver
by the help of it you can fetch your update information form own structed service. For example JSON API
, XML
,Raw text
and so on. For this reason there is special init()
method accepting this variable. This feature has added by @andrewpros.
You can call with the same way in Kotlin and Java. Library contains samples both in Kotlin and Java
Library components:
MAHUpdaterDlg
- In this situation dialog show to user to update or install newer version and lets to postpone the action to later time and use applicationMAHRestricterDlg
- In this situation dialog urges user to update or install newer version and dont alow use older version
The porpose of lib to show automatically these dialogs on application start if there are any need for it.
- MAHUpdaterDlg
opens on following situation.
- Or
uri_current
value is different from app's installed package url - Or
version_code_current
value is greater than app's installed version on device
- MAHRestricterDlg
opens on all situation MAHUpdaterDlg
opens and following situation.
version_code_min
value is greater than app's installed version on device
But when you develop your apps UI and want to show these dialogs there are test modes also and you can open dialogs by calling methods relatively
MAHUpdaterController.testUpdaterDlg(activity)
-MAHUpdaterDlg
MAHUpdaterController.testRestricterDlg(activity)
-MAHRestricterDlg
1) To import library to you project add following lines to project's build.gradle
file.
The last stable version is 1.1.5
dependencies {
compile 'com.mobapphome.library:mah-android-updater:1.1.7'
}
2) On the start of your application call MAHUpdaterController.init()
method to initialize modul. For example: MainActivity's onCreate()
method or in splash activity. Check http url is correct and points to your service on the web.
Code:
MAHUpdaterController.init(activity,"http://highsoft.az/mah-android-updater-sample.php")
3) When you quit app, you have to call MAHUpdaterController.end()
method to finalize modul. For example: MainActivity's onDestroy()
method.
MAHUpdaterController.end()
4) To customize MAHAndroidUpdater
dialog UI and overide colors set these values on your main projects color.xml
file
<color name="mah_android_upd_window_background_color">#FFFFFFFF</color>
<color name="mah_android_upd_title_bar_color">#FF3F51B5</color>
<color name="mah_android_upd_info_txt_color">#FF3F51B5</color>
<color name="mah_android_upd_restricter_dlg_btn_pressed_color">#a33F51B5</color>
<color name="mah_android_upd_restricter_dlg_btn_dark_state_color">#ff3F51B5</color>
<color name="mah_android_upd_restricter_dlg_btn_light_state_color">#ffffffff</color>
<color name="mah_android_upd_upd_dlg_btn_text_color">#ffFF4081</color>
5) Localization:
Following languages is supporting by the lib - Supported Languages. To set localization to app use your own method or if it is static and don't change in program session you can just simply add LocaleUpdater.updateLocale(this, "your_lang");
in the start of your app. For examlpe LocaleUpdater.updateLocale(this, "ru");
6) To customize MAHAndroidUpdater
UI texts and overide them add these lines to main projects string.xml
and set them values.
To help translators there prefixes on the name of strings
- < command verb (actions)> - These are commands verbs. Meaninaction on UI , dialogs
- < noun > - these are nouns not action (verb)
<!-- noun --> <string name="noun_mah_android_upd_dlg_title">Update information</string>
<!-- Button texts-->
<string name="mah_android_upd_dlg_btn_no_later_txt">Later</string>
<!--command verb--> <string name="cmnd_verb_mah_android_upd_dlg_btn_no_close_txt">Close</string>
<!--command verb--> <string name="cmnd_verb_mah_android_upd_dlg_btn_yes_update_txt">Update</string>
<!--command verb--> <string name="cmnd_verb_mah_android_upd_dlg_btn_yes_install_txt">Install</string>
<string name="mah_android_upd_dlg_btn_yes_open_new_txt">Open new version</string>
<!--command verb--> <string name="cmnd_verb_mah_android_upd_dlg_btn_no_uninstall_old_txt">Uninstall old</string>
<!-- Info texts-->
<string name="mah_android_upd_updater_info_install">Application has moved to new address. Please install newer version</string>
<string name="mah_android_upd_updater_info_update">New version is available. Please update application</string>
<string name="mah_android_upd_restricter_info_install">This is old version and does not operate. An application has moved to new address. \nPlease install newer version</string>
<string name="mah_android_upd_restricter_info_update">This is old version and does not operate. Please update application</string>
<string name="mah_android_upd_restricter_info_open_new_version">This is old version and does not operate. Please open new version</string>
<!-- Additional information-->
<string name="mah_android_upd_internet_update_error">Check your internet connection</string>
<string name="mah_android_upd_play_service_not_found">Install Google Play Services to update application</string>
<string name="mah_android_upd_info_popup_text">\"MAHAndroidUpdater\" library</string>
7) To customize Info button
on the right - upper
corner of dialogs. You can do it with help of MAHUpdaterController.init()
method. It has three version. init()
This method well documented and you can see it when developing your app.
You can do followings with Info button
:
- Change visibility
- Set your own name or url to open when click on info button
- Open popup menu or act as button when click on info button
8) As modul takes information from web servcie you need add INTERNET
permission to main project.
<uses-permission android:name="android.permission.INTERNET" />
MAHAndroidUpdater uses Gson and Jsoup libs. There for if you want to create your project with proguard you need to add proguard configuration to your proguard file. Look at Progurda File.
If you have any problem with setting and using library or want to ask question, please let me know. Create issue or write to settarxan@gmail.com. I will help.
See releases. Please,read release notes to migrate your app from old version to a newer.
I am open to hear offers and opinions from you
- Fork it
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Added some feature')
- Push to the branch (git push origin my-new-feature)
- Create new Pull Request
- Star it
Library now supports following languages
- Azerbaijan
- English
- German
- Greek
- Hindi
- Portuguese
- Russia
- Turkey
- Add your language
To help translator in context I have added prefixes to the start of the string names.
Be carefull when translating. Prefixes are following:
* < command verb (actions)> - These are commands verbs. Meaninaction on UI , dialogs
* < noun > - these are nouns not action (verb)
We need help to add new language localization support for libarary. If you have any hope to help us we were very happy and you can check following GitHub Issues URL to contribute. To contribute get res/values/string.xml file and translate to newer language. Place it on res/values-"spacific_lang"/string.xml
Please ping me or send a pull request if you would like to see your app in the start of the list.
Icon | Application | Icon | Application |
---|---|---|---|
[Your app] | ping me or send a pull request | Indian Railway PNRStatus IRCTC | |
Миллионер - на Pусском | Milyoner - Türkçe | ||
Millionaire - in English | Məzənnə | ||
MAHAds - Sample | MAHAndroidUpdater - Sample | ||
MAHEncryptorLib - Sample | Ləzzət | ||
Milyonçu | Millionär - Deutsche |
- Library for advertisement own apps through your other apps.
- Library for encryption and decryption strings on Android apps and PC Java applications.
Copyright 2017 - Sattar Hummatli
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.