• Stars
    star
    178
  • Rank 214,989 (Top 5 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

☀️📦🐎 An Android library to check new versions(update) of your Android applications on the PlayStore (free, open source, third party).

AndroidAppUpdater - Java (Kotlin, Android)

Android Library

A free, open source, third party Android library to notify the update information about the installed android apps on an android device. The library has been built with the Kotlin language. Check out the wiki link. To support, Buy Me A Coffee

Description

AndroidAppUpdater is a free, open source, third party Android library for notifing update information to android apps installed on an android device. By its help, an old application is notified about update information from the 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

Contributors

Contents

Demo App

Download the demo app from this link - Demo App. You can easly test the lib's functionality.

Service structure

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":"AndroidAppUpdater 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 dialogs
  • name - name of the belonging app
  • uri_current - current package path
  • version_code_current - current version code avilable
  • version_code_min - Minimum version code, which does not work normal and had to force to update
  • update_info - Update information
  • update_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.

Library structure

You can call with the same way in Kotlin and Java. Library contains samples both in Kotlin and Java Library components:

  • AAUpdaterDlg- In this situation dialog show to user to update or install newer version and lets to postpone the action to later time and use application
  • AAUpdaterRestricterDlg - 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. - AAUpdaterDlg 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

- AAUpdaterRestricterDlg opens on all situation AAUpdaterDlg 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

  • AAUpdaterController.testUpdaterDlg(activity) - AAUpdaterDlg
  • AAUpdaterController.testRestricterDlg(activity) - AAUpdaterRestricterDlg

Installation manual

The lib has compiled with the gradle 4.6.

1) To import library to you project add following lines to project's build.gradle file.
The last stable version is 1.3.3

repositories {
    maven { url 'https://dl.bintray.com/hummatli/maven/' }
}

dependencies {
     //The android-app-updater libary
    implementation 'com.mobapphome.library:android-app-updater:1.3.3'
    
    //These dependencies have been used in this lib so you need to include them acording to gradle 3.0 and upper
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'org.jsoup:jsoup:1.10.2'
}

2) On the start of your application call AAUpdaterController.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:

    AAUpdaterController.init(activity,"http://highsoft.az/android-app-updater-sample.php")

3) When you quit app, you have to call AAUpdaterController.end() method to finalize modul. For example: MainActivity's onDestroy() method.

    AAUpdaterController.end()					

4) To customize AndroidAppUpdater dialog UI and overide colors set these values on your main projects color.xml file

    <color name="android_app_upd_window_background_color">#FFFFFFFF</color>
    <color name="android_app_upd_title_bar_color">#FF3F51B5</color>
    <color name="android_app_upd_info_txt_color">#FF3F51B5</color>

    <color name="android_app_upd_restricter_dlg_btn_pressed_color">#a33F51B5</color>
    <color name="android_app_upd_restricter_dlg_btn_dark_state_color">#ff3F51B5</color>
    <color name="android_app_upd_restricter_dlg_btn_light_state_color">#ffffffff</color>

    <color name="android_app_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 AndroidAppUpdater 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_android_app_upd_dlg_title">Update information</string>
    <!-- Button texts-->
    <string name="android_app_upd_dlg_btn_no_later_txt">Later</string>
    <!--command verb--> <string name="cmnd_verb_android_app_upd_dlg_btn_no_close_txt">Close</string>
    <!--command verb--> <string name="cmnd_verb_android_app_upd_dlg_btn_yes_update_txt">Update</string>
    <!--command verb--> <string name="cmnd_verb_android_app_upd_dlg_btn_yes_install_txt">Install</string>
    <string name="android_app_upd_dlg_btn_yes_open_new_txt">Open new version</string>
    <!--command verb--> <string name="cmnd_verb_android_app_upd_dlg_btn_no_uninstall_old_txt">Uninstall old</string>

    <!-- Info texts-->
    <string name="android_app_upd_updater_info_install">Application has moved to new address. Please install newer version</string>
    <string name="android_app_upd_updater_info_update">New version is available. Please update application</string>
    <string name="android_app_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="android_app_upd_restricter_info_update">This is old version and does not operate. Please update application</string>
    <string name="android_app_upd_restricter_info_open_new_version">This is old version and does not operate. Please open new version</string>

    <!-- Additional information-->
    <string name="android_app_upd_internet_update_error">Check your internet connection</string>
    <string name="android_app_upd_play_service_not_found">Install Google Play Services to update application</string>
    <string name="android_app_upd_info_popup_text">\"AndroidAppUpdater\" library</string>

7) To customize Info button on the right - upper corner of dialogs. You can do it with help of AAUpdaterController.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" />

Proguard configuration

AndroidAppUpdater 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.

Help - Issues

If you have any problem with setting and using library or want to ask question, please let me know. Create issue or write to [email protected]. I will help.

To contribute

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

Localization

Library now supports following languages

To contribute for localization

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 <a href="https://github.com/hummatli/AndroidAppUpdater/blob/master/android-app-updater/src/main/res/values/strings.xml file and translate to newer language. Place it on res/values-"spacific_lang"/string.xml

Applications using AndroidAppUpdater

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ə
AppCrossPromoter - Sample AndroidAppUpdater - Sample
SimpleEncryptorLib - Sample Ləzzət
Milyonçu Millionär - Deutsche

Other libraries by developer

  • AppCrossPromoter - Library for advertisement own apps through your other apps.
  • SimpleEncryptorLib - Library for encryption and decryption strings on Android apps and PC Java applications.

License

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.

More Repositories

1

onvif-qt-server-client

Onvif QT Server Client is a sample for creating Onvif Server and Onvif Client with QT C++
C++
213
star
2

AppCrossPromoter

📦🐎 An android library to cross-promote your apps and manage direct-sold campaigns (free, open source, third party)
Kotlin
54
star
3

SimpleEncryptionLib

A free, open source , third party Android library for encryption and decryption of strings in Android apps and PC Java applications. It is 100% compatible with Kotlin and Java applications.
Java
34
star
4

cAndroid

cAndroid is tool for control your PC by Android phone
Java
27
star
5

android-open-animation

Sample animation for android
Java
8
star
6

todo-list-project

Sample web app, created by HTML, CSS, JavaScript and jQuery. Demonstrating todo list, adding and removing items to it.
CSS
5
star
7

DYPQanunlarVeCerimeler

Java
4
star
8

hello-world

This is hello-world repo for guid from GitHub https://guides.github.com/activities/hello-world/
3
star
9

quizzler-flutter

Sample Flutter App
Dart
2
star
10

magic-8-ball-flutter

Sample Flutter app
Dart
2
star
11

flash-chat-flutter

Sample Flutter app with Firebase
Dart
2
star
12

ScribeApp-iOS10

iOS10 Speech Recognition API APP. It recognize sound and prints recognized text to the screen.
Swift
2
star
13

bitcoin-flutter

Sample Flutter app
Dart
2
star
14

todoey-flutter

Sample Flutter app
Dart
2
star
15

swift-ios-sample-apps

This is sample project on my iOS development process.
Objective-C
2
star
16

dicee-flutter

Sample dice rolling app written in Flutter
Dart
2
star
17

YelpCamp

Application created by NodeJS, Express.
JavaScript
1
star
18

go-sample-apps

Sample codes and apps created in my Golang learning process
Go
1
star
19

BlogApp-RESTful

Blog app representing RESTfull services and used Semantic-UI as a front framework
HTML
1
star
20

DreamLister

iOS sample App
Swift
1
star
21

RainyShineWeatherApp-iOS

iOS app for weather forecast. Takes data from weather API and shows it in screen.
Swift
1
star
22

perl-sample-apps

Sample codes and apps created in my Perl learning process
1
star
23

objective-c-sample-apps

Collection of my Objective-C sample apps which has created in learning process of Objective-C
Objective-C
1
star
24

youtube-app-reactjs

Youtube App created with the help of ReactJS
JavaScript
1
star
25

keddit-kotlin-android-app

A small Reddit Android client developed using Kotlin
Kotlin
1
star
26

ruby-sample-apps

Sample projects and codes created on my Ruby learning path
Ruby
1
star
27

weather-app-reactjs-redux

Weather forecast application made with ReactJS state controlled with Redux
JavaScript
1
star
28

polymer-sample-apps

Sample apps created in learning process of Google's Polymer framework
HTML
1
star
29

books-catalog-in-golang

Sample web app (books catalog) built in go web technologies
Go
1
star
30

kotlin-sample-apps

My experiments built to learn Kotlin language with Android and alone
Kotlin
1
star
31

hummatli.github.io

HTML
1
star
32

TacoPOP

POP(Protocol Oriented Programming) designed swift(iOS) app. It contains sample for protocol extensions and other cool stuff related with POP
Swift
1
star
33

PokedexApp

iOS Pokedex app!
Swift
1
star
34

KotlinExtensionsForAndroid

Library is a collection of useful extension functions for Android SDK
Kotlin
1
star
35

java-image-decorator

Tool for drawing text on images.
Java
1
star
36

DeveloperTutorils-Objective-C

Objective-C sample reading items from service and shows them in ViewController
Objective-C
1
star
37

csharp-sample-apps

Sample codes and apps created in my C# learning process
C#
1
star