Native Android app for Habitica

Overview

Habitica for Android

Join the chat at https://gitter.im/HabitRPG/habitrpg-android

Habitica is an open source habit building program which treats your life like a Role Playing Game. Level up as you succeed, lose HP as you fail, earn money to buy weapons and armor. This repository is related to the Android Native Application.

It's also on Google Play:

Get it on Google Play

Having the application installed is a good way to be notified of new releases. However, clicking "Watch" on this repository will allow GitHub to email you whenever we publish a release.

What's New

See the project's Releases page for a list of versions with their changelogs.

View Releases

If you Watch this repository, GitHub will send you an email every time we publish an update.

Contributing

For an introduction to the technologies used and how the software is organized, refer to Contributing to Habitica - "Coders (Web & Mobile)" section.

Thank you very much to all contributors.

How mobile releases work

All major mobile releases are organized by Milestones labeled with the release number. The 'Help Wanted' is added to any issue we feel would be okay for a contributor to work on, so look for that tag first! We do our best to answer any questions contributors may have regarding issues marked with that tag. If an issue does not have the 'Help Wanted' tag, that means staff will handle it when we have the availability.

The mobile team consists of one developer and one designer for both Android and iOS. Because of this, we switch back and forth for releases. While we work on one platform, the other will be put on hold. This may result in a wait time for PRs to be reviewed or questions to be answered. Any PRs submitted while we're working on a different platform will be assigned to the next Milestone and we will review it when we come back!

Given that our team is stretched pretty thin, it can be difficult for us to take an active role in helping to troubleshoot how to fix issues, but we always do our best to help as much as possible :) With this in mind, when selecting issues to work on it may be best to pick up issues you already have a good idea how to handle and test. Thank you for putting in your time to help make Habitica the best it can be!

Steps for contributing to this repository:

  1. Fork it
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Create new Pull Request
    • Don't forget to include your Habitica User ID, so that we can count your contribution towards your contributor tier

Code Style Guidelines

We follow the code style guidelines outlined in Android Code Style Guidelines for Contributors.

You can install our code style scheme to Intellij and/or Android Studio via this shell command:

$ ./install-codestyle.sh

Build Instructions

Config Files

  1. Setup Habitica build config files by simply copying or renaming the example habitica files:

    habitica.properties.example to habitica.properties

    habitica.resources.example to habitica.resources

    You also need google-services.json. Download it from Firebase in the next step.

    Note: this is the default production habitica.properties file for habitica.com. If you want to use a local Habitica server, please modify the values in the properties file accordingly.

  2. Go to https://console.firebase.google.com

    a. Register/Login to Firebase. (You can use a Google account.)

    b. Create a new project called Habitica

    c. Create two apps in the project: com.habitrpg.android.habitica and com.habitrpg.android.habitica.debug

    d. Creating each app will generate a google-services.json file. Download the google-services.json file from the second app and put it in \Habitica\

    You can skip the last part of the app creation wizards (where you run the app to verify installation).

  3. If using Android Studio, click Sync Project with Gradle Files. Update Android Studio if it asks you to update. Run Habitica.

Comments
  • Push to F-Droid?

    Push to F-Droid?

    If we decide to push to F-Droid we couldn't use In-App-Purchases (since it needs the Google PlayServices). Maybe even more, but for now it should be only this feature.

    Also we'd have to create a different version which doesn't uses the google libraries (don't know if we need to remove or just not use them at all)

    Help wanted Status: issue: suggestion-discussion 
    opened by negue 39
  • Emoji & markdown support (Tasks and tavern)

    Emoji & markdown support (Tasks and tavern)

    This adds emoji and markdown support. Loading time is added by the markdown parser (it's only really noticeable in the Tavern). There's no emoji keyboard right now, emojis must be added by a third-party keyboard like the Android one.

    ~~This adds two new libraries to the project: Emojicon and AndDown. This adds three new libraries to the project: Emojicon, EmojiParser and AndDown.~~ Uses two additional libraries: AndDown and Emoji Lib.

    TODO

    • [x] Parse Cheat Sheet codes to emojis
    • [x] Parse markdown
    • [x] Convert unicode emojis to Cheat Sheet codes
    • [x] Add emoji keyboard (?)
    • [ ] Fix problem with incorrect rendering of inline images



    UserID: 45fd6404-c370-4603-8f8b-42ad7f984318

    opened by Data5tream 31
  • App can be stuck in empty state

    App can be stuck in empty state

    Some users seem to have an issue where their app is stuck in an empty state and never loads user data. Logging out and back in doesn't fix this, so it is probably something with the data in their account.

    EDIT:

    If you are still experiencing this and want to help catch all instances of this issue, please provide us with your Habitica user ID.

    Type: Bug 
    opened by phillipthelen 22
  • Dailies tab ignoring setting to show due tasks by default on launch

    Dailies tab ignoring setting to show due tasks by default on launch

    MaybeSteveRogers has reported a problem where dailies are showing both due and not due at once. Still not sure if this is the same issue as the one with completed/uncompleted to-dos, so let me know if it needs breaking out into an issue of its own!

    Device: OnePlus OnePlus 6T Android Version: 29 AppVersion: バージョン: 3.1 (2675) User ID: 767e5d92-0e13-4e30-acb1-d8bba62824fc Level: 88 Class: rogue Is in Inn: false Uses Costume: true Custom Day Start: 7 Timezone Offset: -60 Details:

    Dear Habitica team,

    Overnight, my app has begun acting weirdly. When I opened it this morning (before CDS), it very briefly displayed no tasks at all before loading them as usual. This has never happened befhttps://assets.grammarly.com/emoji/v1/1f3af.svgore.

    I have enabled the setting to "show only due" for Dailies. However, it now consistently shows "all". The setting is still enabled in Settings. Reloading content does not fix this; neither does closing and reopening the app. It keeps reverting to "all".

    As I said, this has literally happened overnight, I've not used the app in any way differently from what I normally do.

    It seems likely this was caused by updating to 3.1, in this case, because they had just done that when the issue started.

    May be related to #1407

    Type: Bug Help wanted Priority: minor Status: pr: ready for review 
    opened by shanaqui 21
  • Specify instance in Login/Register activity, not in build property file.

    Specify instance in Login/Register activity, not in build property file.

    It would be nice, if people who run their own instance of habitica for privacy reasons wouldn't have to compile the app themselves, but instead could just set the server they want to connect to on the login page.

    opened by jcgruenhage 20
  • App not showing any tasks on load after running in the background for extended periods

    App not showing any tasks on load after running in the background for extended periods

    "When I start the Android app, or open its window when I have had other programmes as foreground, it claims I have no tasks. If I go to party chat, then click tasks, my tasks appear. This is happening pretty reliably. I tried to do the clear cache as suggested, but this version of Android does not show that option for Habitica.

    One time I forced Habitica to stop from Android settings, and my tasks appeared when I opened Habitica."

    Clearing the cache, pulling down to refresh, etc, don't help; the issue quickly recurs.

    Device: LGE LG-TP450 Android Version: 24 AppVersion: Version 3.2 (2832) User ID: 1e57e588-c696-478e-84f5-8248e6bd2659 Level: 20 Class: wizard Is in Inn: false Uses Costume: true Custom Day Start: 4 Timezone Offset: 480

    Type: Bug Help wanted Status: issue: needs investigation Priority: minor 
    opened by shanaqui 19
  • Improve task tap areas

    Improve task tap areas

    We'd like to extend tap areas on tasks to be a little more generous and capture taps that may have missed the intended UI slightly. We've done an initial extension to make it a little larger but there are some improvements to be made still.

    Would like the tap area for a main task button to extend out towards the beginning of the task text, so if you tap anywhere there, it will check off a task.

    Also, the UI to open the checklist still behaves a little awkwardly if your tap hits slightly below the button that expands/collapses checklists.

    Here's a rough visual of how we'd like the tap areas to act, with the pink areas being tap-able: Screen Shot 2020-09-29 at 10 59 42 AM

    Type: Enhancement Help wanted Priority: minor Accessibility Status: issue: in progress 
    opened by saraolson 19
  • tag filter hides all tasks

    tag filter hides all tasks

    When I select a tag that I know has been applied to some tasks, my task lists appear empty.

    Reproducible with several different tags.

    (Sorry about the late bug report. :( I haven't been able to install anything on my phone for a while until negue helped me just now.)

    Type: Bug 
    opened by Alys 18
  • Not receiving any notifications

    Not receiving any notifications

    In the settings I have "Activate Reminder" checked with a time of "17:30", but I never get this reminder. I also have "User Push Notifications" checked, and everything is checked under the "Push Notifications" page, but I never get these reminders either.

    I know awhile ago there was a problem with Android notifications, but I can't find any information on it, and I see commits like this one that make it seem like this problem should be fixed. https://github.com/HabitRPG/habitica-android/commit/e6876acea06aa5c035b4965a0a266297bcb8280d

    opened by JacobFrericks 17
  • various crashes:

    various crashes: "Unfortunately, Habitica has stopped" and "Connection Errors" and "Habitica isn't responding"

    I seem to be getting crashes more often than other users, so I'm going to start documenting them here. @franzejr says that my crashes are being logged.

    So, I got "Unfortunately Habitica has stopped" when logging out, about three to five minutes before the timestamp of this post.

    New crashes will be in the comments here.

    Type: Crash 
    opened by Alys 17
  • Ukrainian language isn't present in language select menu

    Ukrainian language isn't present in language select menu

    Describe the bug As far as I know, this translation exists on the Weblate platform. And I also see a directory called "values-uk" in the resource folder. But it is not possible to choose the Ukrainian language from a mobile device.

    To Reproduce Steps to reproduce the behavior:

    • Open Habitica on Android
    • Click "Settings"
    • Click "Language"

    Expected behavior "Українська" should be present in language select menu.

    Screenshots Screenshot_2021-11-26-10-05-08-820_com habitrpg android habitica Screenshot_2021-11-26-10-05-10-905_com habitrpg android habitica

    Smartphone (please complete the following information):

    • Device: Xiaomi Mi 9T Pro
    • OS: Android 11 RKQ1.200826.002
    • App Version: 3.4.1.1 (3091)
    • Habitica Username: @punk-rock
    Type: Bug Help wanted Priority: minor Status: issue: in progress 
    opened by nazarparuna 16
  • enchanted armoire content and description appears untranslated in russian

    enchanted armoire content and description appears untranslated in russian

    Device: Xiaomi POCO X3 NFC Android Version: 31 AppVersion: Версия 4.0.5 (4762) BETA User ID: 0b21b610-154e-4426-860e-4c3d7be79893 Level: 50 Class: healer Is in Inn: false Uses Costume: true Custom Day Start: 0 Timezone Offset: -180 Details:

    There is no translation of the description and contents of the enchanted armoire.

    Tried clearing the cache - did not help.

    On the weblate all the contents of the chest translated. Screenshot_2022-12-21-18-02-27-669_com habitrpg android habitica Screenshot_2022-12-21-18-02-34-108_com habitrpg android habitica

    Type: Bug 
    opened by rilygreat 1
  • Equipment and Stats not appearing

    Equipment and Stats not appearing

    Device: Xiaomi Redmi Note 7 Android Version: 29 AppVersion: Версия 4.0.5 (4762) BETA User ID: bdb06384-80ad-47ce-8449-7d526eaf2192 Level: 88 Class: rogue Is in Inn: false Uses Costume: true Custom Day Start: 2 Timezone Offset: -120

    Equipment symbols and stats not showing

    Screenshot_2022-12-15-22-47-14-459_com habitrpg android habitica

    Type: Bug 
    opened by CuriousMagpie 0
  • rearranging tags on web does not sync to app

    rearranging tags on web does not sync to app

    UUID | 50a038f1-d7d2-4828-b796-6757f139556f User Agent | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 A new bug report from @SorbieTower Hello! I'm having issues with re-arranging tags. Issue #1: I can only re-order tags via the website. There appears to be no option to re-arrange them on the mobile (Android) app. Issue #2: When I re-arrange my tags on the website, my changes refuse to sync to the Android app. I've tried refreshing the website and the app, force-stopping the app, uninstalling the app, and re-starting my phone. Currently, none of these actions have resulted in the app showing the changes I made to the tag order on the website. Thanks for your help!

    Type: Bug Help wanted Priority: minor 
    opened by rilygreat 0
  • Use LocalDateTime/ZonedDateTime to avoid discrepancy when using Calendar & Gregorian Calendar

    Use LocalDateTime/ZonedDateTime to avoid discrepancy when using Calendar & Gregorian Calendar

    A Calendar instance is created with the current time, and a GregorianCalendar was used to set the Day, Month, and Year of a updated reminder.

    If the reminders were updated afternoon (say - 2PM), the Calendar would pass a hour value of 14. The Gregorian Calendar would take that value not as 2PM but as an hour over 12 which overflows into AM of the following day - causing a loop of reiterating days not scheduled during the original alarm/reminder creation.

    This would not occur if the alarms were updated/set in the morning, which is why the issue seemed inconsistent.

    The current Date object is now being updated to a LocalDateTime.

    opened by Hafizzle 0
Releases(4.0.2)
Owner
HabitRPG
HabitRPG
Integrate Tezro as a payment method in your app!

Tezro OpenApi for JVM and Android This repository contains the JVM implementation of Tezro OpenApi. It offers an easy and simple integration with your

Tezro 4 Jun 1, 2022
This is an Online Book App in which user can read and add their books on favourites fragment and also give rating on it.

BookHub-AndroidApp BookHub Basic Android App Based on the concept of Fragment, Navigation Drawer, Database (Room), Internet Access, etc. See the app o

Yash Kumar Shrivas 3 Mar 10, 2022
To-Do App using Modern Declarative UI Toolkit called Jetpack Compose

Daedalus-Scheduler To-Do App using Modern Declarative UI Toolkit called Jetpack Compose The Brief App that searches recipes from the api spoonacular A

null 0 Jan 6, 2022
BookSearchApp - Book Search App With Kotlin

BookSearchApp IT Book Search App Search IT books with keyword and view informati

null 1 Feb 7, 2022
Active record style SQLite persistence for Android

ActiveAndroid ActiveAndroid is an active record style ORM (object relational mapper). What does that mean exactly? Well, ActiveAndroid allows you to s

Michael Pardo 4.7k Dec 29, 2022
A blazing fast, powerful, and very simple ORM android database library that writes database code for you.

README DBFlow is fast, efficient, and feature-rich Kotlin database library built on SQLite for Android. DBFlow utilizes annotation processing to gener

Andrew Grosner 4.9k Dec 30, 2022
greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases.

Check out ObjectBox Check out our new mobile database ObjectBox (GitHub repo). ObjectBox is a superfast object-oriented database with strong relation

Markus Junginger 12.6k Jan 3, 2023
Object-relational mapping for Android

RushOrm Object-relational mapping for Android RushOrm replaces the need for SQL by mapping java classes to SQL tables. What is the aim? The aim is to

Stuart Campbell 172 Nov 11, 2022
Insanely easy way to work with Android Database.

Sugar ORM Insanely easy way to work with Android databases. Official documentation can be found here - Check some examples below. The example applicat

null 2.6k Dec 16, 2022
Android ORM

Shillelagh Shillelagh is an sqlite library. It was built to make life easier. The entire library was built around simplicity when using sqlite in Andr

Andrew Reitz 49 Sep 11, 2020
Compile-time active record ORM for Android

Ollie Compile-time active record ORM for Android. Multiple mapping methods. SQLiteDatabase-like interface (QueryUtils.java). Lightweight query builder

Michael Pardo 423 Dec 30, 2022
requery - modern SQL based query & persistence for Java / Kotlin / Android

A light but powerful object mapping and SQL generator for Java/Kotlin/Android with RxJava and Java 8 support. Easily map to or create databases, perfo

requery 3.1k Dec 29, 2022
A blazing fast, powerful, and very simple ORM android database library that writes database code for you.

README DBFlow is fast, efficient, and feature-rich Kotlin database library built on SQLite for Android. DBFlow utilizes annotation processing to gener

Andrew Grosner 4.9k Dec 30, 2022
Core Data for Android

NexusData Core Data for Android NexusData is an object graph and persistence framework for Android. It allows for organizing and managing relational d

Dia Kharrat 71 Nov 11, 2022
A simple NoSQL client for Android. Meant as a document store using key/value pairs and some rudimentary querying. Useful for avoiding the hassle of SQL code.

SimpleNoSQL A simple NoSQL client for Android. If you ever wanted to just save some data but didn't really want to worry about where it was going to b

Colin Miller 389 Sep 25, 2022
An Android library that makes developers use SQLite database extremely easy.

LitePal for Android 中文文档 LitePal is an open source Android library that allows developers to use SQLite database extremely easy. You can finish most o

Lin Guo 7.9k Dec 31, 2022
Active record style SQLite persistence for Android

ActiveAndroid ActiveAndroid is an active record style ORM (object relational mapper). What does that mean exactly? Well, ActiveAndroid allows you to s

Michael Pardo 4.7k Dec 29, 2022
Insanely easy way to work with Android Database.

Sugar ORM Insanely easy way to work with Android databases. Official documentation can be found here - Check some examples below. The example applicat

null 2.6k Jan 9, 2023
An Android helper class to manage database creation and version management using an application's raw asset files

THIS PROJECT IS NO LONGER MAINTAINED Android SQLiteAssetHelper An Android helper class to manage database creation and version management using an app

Jeff Gilfelt 2.2k Dec 23, 2022