Android Authenticator & Contacts

Last modified by Somenath Sarkar on 2021/03/17 21:54

xandroid80.png An Android authenticator to be used by other andoid application and with integrated synchronisation of contacts
Developed by

Fitz Lee, Aleksei Ovsiannikov, Divyansh Jain, Somenath Sarkar

0 Votes
LicenseGNU Lesser General Public License 2.1

Android 4.1+


See ideas and work in progress on the Design page.

User Guide for Synchronization of Contacts

This android app can help you synchronize all your co-workers in your phone book(or you can select the groups to sync) so that you can easily know and communicate with your colleagues. Just follow the guidances below:

  1. Go to your android Settings -> Accounts -> + Add account -> xwiki
  2. Sign in the xwiki account or Sign up for a new xwiki account
  3. Select synchronization type: (Dont't sync, Sync all users, or Sync users of the selected groups)
  4. Wait for a moment, it will synchronize the contacts in your phone book.
  5. And you can edit other's information from the phonebook contact's profile if you have the permission. or you can only edit your own contact information.

User Guide for Authenticator for third-party apps

For whom wants to use this authenticator to get the auth token and access the account's private resources in the server, just like google or facebook account, the third-party apps can get the token to access your account information without login process. For this project, we implement this authenticator using XWiki Session authentication  so that you can get the auth token from the android authenticator and access the account's information from server.

If you are an android developer and want to access the xwiki account, the tips below are what you may use in your android app. Following these guidance you can easily access the xwiki account which have been added in your phone.

  1. Useful Apis  
  2. Use Demo  
  3. Note: You should get the auth token again if you found the auth token was expired. if these two tokens are the same, directly call inValideAuthToken function and retrieve a new token;  if it's different, just use the new token to access server because maybe others have updated the token before.
Design Page.
Github Repository .
Jira Issues .
Automated Build.

Make a release

Now for making release:

  1. Make a final run of the app and the tests. If you've found some error fix them.
  2. Increment the versionName & versionCode in build.gradle (Module: app)
  3. Be sure, that changelog file is correctly filled. For this:
    1. Write all the changes you've done in the current branch in file. 
    2. Write the changelog as the value of the property "CHANGELOG_en_BG" in standard format with symbols "\n" instead of newlines.

      For example:
      CHANGELOG_en_BG=Rewrite all interaction with server\nFix bug with contacts\nFix bug with the first launch

  4. Send a PR and request for a reviewer.
  5. Once the PR is merged successfully, open build job and push "Build now". The script will run and it will publish the latest release on the play store automatically.
  6. After the app is published make a release on Github. It should contain the changes you've done in this release and generate an apk from the studio and upload it and then make a release.
  7. Next, open and enter the version name and the release date and click add.
  8. Next, open and click on edit and add your name as Author. Then go to the bottom of the page and click on the "Extension Version" and an empty block of release will open. Add the version name and the app URL from the GitHub releases. Post screenshot if you've updated the UI.
    1. To attach the screenshot/file go to the bottom of the page and click on "attach the new version to this page" and upload your files.
  9. Next, open and create an account if you don't have. Then add a new topic and announce your release. For instance:
  10. And finally, announce it on #xwiki chat and ask for feedback.

App Snapshots

Prerequisites & Installation Instructions


Mobile device running Android OS 4.1+.



Nightly build

Could be unstable or even not work at all.

Release Notes


  • Shimmer Effect in Lists
  • Integration of Xwiki Notifications
  • Landscape mode was added for Select Contact Page


  • Registration now is opening in application directly
  • Notification about internet connection absence was added
  • Landscape modes was added for Sign In, Synchronization and Edit Contact screens
  • Password visibility toggle button was added
  • Other fixes and improvements


  • The in the earlier release was not written properly resulting in the bad behavior of the entire app. In this release, the proguard file is properly configured.


  • Added support for OpenID Connect Provider.
  • Other apps can request to see XWiki user info through OIDC login.
  • Added OIDC as a new login method.
  • Added pagination for users list type.
  • Added Data Saving Function which disables the sync of users avatars.
  • Fixed: SSLHandshakeException crash.
  • Reduced app size.


  • Added support for adding multiple XWiki accounts.
  • Once the preferences screen is opened you can choose to edit the preferences of other XWiki accounts too.
  • After users and groups, the list is loaded it's stored in DB so it will load instantaneously next time you open the app. 
  • Fixed: Clicking on the save button does not close the activity. 
  • Fixed: SocketTimeoutException crash.


  • Most of the application is now written in Kotlin
  • Fixed: Contacts synchronizing improperly 
  • Fixed: Forcing a synchronization does not work 
  • Fixed: Wrong synchronization status


  • Fully rewritten work with editiong contacts
  • Now will be synchronized more information from XWiki profile (in future it will be extended)
  • Fixed problem with "don't sync" list in settings
  • Fixed problem with groups synchronizing (infinity synchronization)
  • Fixed with display chosen early groups for synchronization
  • Fixed relogin problems for synchronization


  • Fixed bug with private XWiki instances
  • Fixed bug with impossibility to edit contact (was error)


  • Rewrite all interaction with server
  • Fix bug with contacts
  • Fix bug with first launch
  • Rewrite front part of application

Get Connected