ProtonMail Android app

Overview

ProtonMail for Android

Copyright (c) 2020 Proton Technologies AG

License

The code and data files in this distribution are licensed under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See https://www.gnu.org/licenses/ for a copy of this license.

See LICENSE file

Setup

The most straightforward way to build and run this application is to:

  • Install Android Studio: https://developer.android.com/studio/install
  • Clone the repository. You have two options:
    • Use the Project from version control in Android Studio, or
    • Use the git clone command and import it into Android Studio
  • Build and run the app directly in Android Studio

Alternatively, if you want to build the app directly from the command line (or using a different IDE, etc.), you will first need to install the command line tools from: https://developer.android.com/studio#cmdline-tools. Then you will need to install the SDK using the sdkmanager tool. After cloning the repository with git clone you will need to edit the local.properties file so that it points to the location of the SDK. Depending on which operating systems you use, the location of the SDK is usually:

  • Windows: C:\Users\ \AppData\Local\Android\sdk
  • MacOS: /Users/ /Library/Android/Sdk/
  • Linux: /home/ /Android/Sdk/

Then, go to the app’s root directory in the command line tool and run:

  • ./gradlew assembleBetaDebug
  • adb install ./app/build/outputs/apk/beta/debug/ProtonMail-Android-1.XX.X-beta-debug.apk

Note: In app notifications when building from source

When building from source, in app push notifications for new emails will not work out of the box.

The app uses Google's Firebase Cloud Messaging (FCM) service to deliver push notifications. However, we are not publishing the production version of the configuration files needed to set up this service, because the values specified within are deemed sensitive. Instead, we publish dummy versions of the files (config/google-services/dummy-google-services.json and config/google-services/dummy-google-services-beta.json) which allows you to build the app without push notifications. The dummy files will be copied to the relevant folders once you run the ./gradlew command.

We may offer alternative push notification systems in the future which do not rely on Google services.

Contributions

Contributions are appreciated, but must conform to Proton Guidelines.

Branch naming

Branch names must respect the pattern type/description-of-the-change.

Type must be one of the following:

  • chore for changes not related to the Kotlin source code, for example a change in the build config
  • doc for changes related to source code documentation, or external document, like the README
  • feat for a new feature for the app
  • fix for bug fixes
  • refactor for improving one or more unit of code, without impacting the behaviour of the app
  • test for everything related to test ( add a new test suite, add a new test into an already existing test suite or improve/modify the performance or the behaviour of an already existing test )

description of change must be a concise and meaningful description of what is expected by the change apported; words must be separated by a dash -

The whole name of the branch must be lower case.

Commit message

The template for a commit message is the following



#comment 
   
    
Affected: 
    

    
   

Title is required and must start with a capital letter.

#comment field is optional if the Title can exhaustively explain the changes, otherwise is required. Body of the comment must start with a capital letter.

Affected is optional and must be a comma separated list of the elements affected by the changes, it could be the name of a class or a behaviour like Encryption, Login flow, LoginActivity.kt

Code style and pattern

The code must conform the standards defined in the files config/CodeStyle.xml and config/detekt.xml.

CodeStyle.xml can be imported in the IDE ( Preferences -> Editor -> Code Style -> Import scheme for IntelliJ and Android Studio ).

Detekt reports can be generated with the command ./gradlew detekt. Check Detekt GitHub documentation for know how to download and configure the optional IDE plugin.

Copyright (c) 2020 Proton Technologies AG

Comments
  • Feature Request: Add Dark Theme

    Feature Request: Add Dark Theme

    This is one of the few apps that I use that doesn't follow my System's Color Theme (which is set to dark). It would be nice to have the ability to switch between light and dark color themes. Even better if it could just query what theme the device is using and use the systems default theme setting.

    More information about Android's light/dark themes can be found here: https://developer.android.com/guide/topics/ui/look-and-feel/darktheme

    V4 redesign 
    opened by Viper896 18
  • [Bug] App sometimes attempts to send outgoing e-mail twice when on a weak connection, leaves a draft in the Drafts folder that can't send and that you can't delete

    [Bug] App sometimes attempts to send outgoing e-mail twice when on a weak connection, leaves a draft in the Drafts folder that can't send and that you can't delete

    Describe the bug Not entirely sure how to call it, but I've run into an error that makes the app try to send a mail more than once. When that happens, the mail doesn't show up in the Sent folder, instead it stays in Drafts, where it says "sending message..." with a loading icon, which never completes, and every few seconds I get a notification telling me that the message failed to send because it has already been sent. If I try to remove the "ghost" draft, I get "Error while deleting some messages. Some of the selected messages are in sending process?!"

    After a little bit, it eventually manages to clear itself up, and it lets me delete the "ghost" draft.

    To Reproduce I don't have clear reproduction steps, because I'm not certain what causes it. But it might be a combination of unstable connection, and accidentally double-tapping the Send button. I'm sending e-mails to a non-protonmail address as well, which may or may not make a difference.

    Expected behavior If the app knows that a message has already been sent, it should stop trying to send the "ghost" draft and clear it, instead of leaving it there and trying to send it again and again. It should self-correct when network-related errors happen.

    Screenshots image

    (If I can get it to happen again, I'll include a screenshot of the error notification. I didn't think of taking a screenshot of it and it hasn't happened again yet.)

    Smartphone (please complete the following information):

    • Device: Nexus 5
    • OS: Android 7.1.2
    • Version 1.13.24 (751)

    Additional context I've confirmed that when this happens, the message does get sent properly, even if it's not very clear.

    bug 
    opened by ghost 13
  • Bug with adding attachments

    Bug with adding attachments

    Expected behavior

    Successful sending of an attachment in an email.

    Current behavior

    Attachment cannot be added to an email. Returning to the message composition page loses body and subject of the email if previously entered.

    Steps to reproduce

    1. Open app and log in.
    2. Click compose message icon on top right.
    3. Start composing the email (select address to send from and to send to, fill in subject, write in body). See image 1 below.
    4. Select attachment icon (see image 2) and then select an attachment (either using the camera or files on the device storage).
    5. You see two sections on the screen (see the 3rd image below). Go back to email composition screen using top left button or back button on phone. (5.5. After choosing an attachment and finding yourself on a screen like in the 3rd image below, you can select the chosen attachment to preview it. Returning to the attachments list shows an empty list again like in image 2.)
    6. You return to an empty message body, and a subject replaced with "(No Subject)". The email addresses are kept intact. The attachment is lost. See image 4.

    My Environment

    Android version: 8.0.0 Device model: SM-G960U App version: 1.13.10 (729)

    20200824_183515 Image 1: drafting a new email. Screenshot_20200824-182721_ProtonMail Image 2: screen after selecting attachment icon. Screenshot_20200824-182847_ProtonMail Image 3: screen after selecting a file to attach. 20200824_183454

    Image 4: returning to draft shows lost progress.

    bug 
    opened by ayc9 12
  • Some folders do not sync after bulk actions applied to inbox

    Some folders do not sync after bulk actions applied to inbox

    Summary

    Some folders, like Inbox, show messages in the client that have been moved to other folders on the server

    Background

    I ran a few bulk operations on my mailbox recently. I reduced a few thousand emails down to a handful. Most emails were moved to the Archive, Trash, or custom folders.

    When I open the ProtonMail app, my Inbox shows messages that were moved to other folders. When I open ProtonMail on web or via the ProtonMail Bridge, I do not see those messages in my inbox.

    My first assumption is some kind of caching might be in play. But I'm not sure.

    Details

    My Android environment:

    • Android Version: 9 (software variant google_fi, software channel retus)
    • Device Model: moto x4
    • ProtonMail Version: 1.13.1
    • From Google Play or F-Droid?: Google Play

    Outcome

    Emails in a folder on client should match state of server

    bug 
    opened by jwflory 11
  • Random crash when deleting a mail

    Random crash when deleting a mail

    Occasionally, when I delete an email in the main screen, ProtonMail crashes. Unfortunately, I fail to reproduce it consistently, but it happened to me three times today (and also previously, but now I am bothered enough to open an issue). Also, I'm not even sure whether this is a ProtonMail or Room issue, you tell me.

    Steps I did when it happens:

    1. Opened the app when it had been in the background for a long time
    2. Open and read a new email
    3. Go back to the main screen
    4. Long press the just read email (i.e. the topmost in the list)
    5. Click on the trash icon in the toolbar to delete the mail
    6. App force closes

    Android 9.0 / LineageOS 16.0 (no GApps) ProtonMail v1.13.1 (711)

    Logcat:

    FATAL EXCEPTION: arch_disk_io_1
    Process: ch.protonmail.android, PID: 16974
    java.lang.RuntimeException: Exception while computing database live data.
    	at androidx.room.o$a.run(RoomTrackingLiveData.java:6)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    	at java.lang.Thread.run(Thread.java:764)
    Caused by: java.lang.IllegalStateException: Couldn't read row 75, col 1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
    	at android.database.CursorWindow.nativeGetString(Native Method)
    	at android.database.CursorWindow.getString(CursorWindow.java:465)
    	at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
    	at ch.protonmail.android.api.models.room.messages.MessagesDatabase_Impl$18.call(MessagesDatabase_Impl.java:39)
    	at ch.protonmail.android.api.models.room.messages.MessagesDatabase_Impl$18.call(MessagesDatabase_Impl.java:1)
    	at androidx.room.o$a.run(RoomTrackingLiveData.java:5)
    	... 3 more
    
    bug Dev completed 
    opened by thgoebel 11
  • [Bug] Unread count in app different to web interface + message discrepancies

    [Bug] Unread count in app different to web interface + message discrepancies

    Hi,

    I have noticed some issues in the ProtonMail Android app:

    System Details

    • Android 11
    • ProtonMail App version 1.13.22 (beta channel)

    The issues

    I have noticed two problems:

    1. The number of unread messages reported by the app is incorrect, the web interface (version 3.16.46) is reporting the correct number.
    • The app shows 4 additional unread messages that do not exist
    • I have further tested by emailing myself, the count does increment by one in both the app and web interface, but the count in the app is still off by 4

    Clearing the app cache does not remedy this problem. I have not cleared app data yet, as this may destroy data needed for debugging.

    I will add too, that this is not simply a propagation delay, this issue has persisted for several days.

    Screenshots

    Web interface (correct values)

    proton-web

    Android app (incorrect values)

    proton-android

    1. I noticed (for the first time) an email received (25/11/20 17:58 AEST) from another ProtonMail user was marked as read in my inbox, though I did not open it or mark it as read and did not receive a push notification for it. This has only occurred once and I can not replicate it (tested sending messages to myself from ProtonMail and Gmail).

    I am confident this is not the result of someone else having access to my account or any other nefarious thing:

    • My account has a strong, unique password and MFA configured for it
    • It is only accessed by myself from secured and fully patched devices using the web portal or official app from Google Play
    • The security page of ProtonMail lists no unknown sessions or logins from unrecognised IP addresses

    There is a slight possibility I may have tapped the notification inadvertently while switching between applications as I was using several apps on the phone at the time Proton records the message as being received. If this occurred, it could have resulted in the message being opened in the app while it was not in focus. I do not think this is what happened, but I raise it as a possibility.

    Reproduction

    As explained, these issues are either omnipresent without a clear root cause (issue 1) or challenging to reproduce (issue 2).

    Analysis

    I believe these issues could be related to the adoption of FCM in the latest release https://github.com/ProtonMail/proton-mail-android/releases/tag/1.13.21

    A significant change in how push and notifications work in the app, followed by related bugs seems unlikely to be a coincidence to me...

    I would welcome any commentary from the ProtonMail team or from any other user experiencing this or similar issues. I would be most happy to provide additional information or assist in further debugging.

    bug 
    opened by nbgh1 9
  • Lack of any communication

    Lack of any communication

    Are the devs super busy behind closed doors? This repo is not really updated as frequently, issues don't get responses at all and there isn't really any posting that I have found talking about it. I want to upgrade my plan but if a simple darkmode feature cant even get developed where would my money be going to then? I hope a developer responds to this, I do not mean what i say in any way disrespectful or hateful.

    enhancement 
    opened by Flam3z 7
  • [Bug] Duplicate notifications after message read/delete

    [Bug] Duplicate notifications after message read/delete

    Describe the bug Once an email notification arrives on the Android app, an interaction with the email (either reading it or deleting it) triggers a second notification that is blank save for the recipient field.

    To Reproduce Steps to reproduce the behavior:

    1. Receive an email on the Android app
    2. Click on delete/trash (I use the French interface so I don't know what it is in English)
    3. A new blank notification arrives a few seconds later

    This can also be reproduced by reading the email, for example in Thunderbird on desktop (using the bridge).

    Expected behavior No additional notification arrives.

    Screenshots image

    Smartphone (please complete the following information):

    • OS: Lineage 18.1 + Microg
    • Version 1.13.40 from F-droid
    bug 
    opened by tfardet 6
  • [Bug] Email push notifications unable to distinguish between read and unread

    [Bug] Email push notifications unable to distinguish between read and unread

    Describe the bug Push notifications show a list of emails which you have not opened from a previous push notification, instead of showing your unread emails

    To Reproduce Steps to reproduce the behavior:

    1. Receive email
    2. DO NOT click on push notification, swipe it away
    3. Open ProtonMail app
    4. Read email and close
    5. Receive second email
    6. The push notification will contain the new email as well as the previously received (and already read) email

    Expected behavior Push notifications should show only unread emails

    Smartphone:

    • Device: Xiaomi Redmi Note 8
    • OS: LineageOS 17.1 with MicroG (Android 10)
    • Kernel Version: 4.14.117
    bug 
    opened by jeanpierrevanzyl 6
  • Checking mailbox notification

    Checking mailbox notification

    App show additional Checking mailbox notification (for a few seconds) every time when I receive new message. It's notification from Ongoing operations channel. I shouldn't see any additional, temporary notification.

    Tested on OnePlus 5T, Android 9, ProtonMail app version 1.13.4 (717) also after fresh app reinstall. I saw this problem also in earlier app versions.

    improvement 
    opened by mKoonrad 6
  • [Bug] App Crashes when writing new Mail or reply/forward

    [Bug] App Crashes when writing new Mail or reply/forward

    Describe the bug App crashes when trying to create a new mail or reply/forward mails on Android 10

    To Reproduce Steps to reproduce the behavior:

    1. Open App
    2. Click on Pencil
    3. App Crashes

    Expected behavior I would expect to be able to write mails using the app.

    Smartphone (please complete the following information):

    • Device: OnePlus 7T
    • OS: Android 10/Oxygen OS
    • Version 1.13.25

    Additional context Viewing Mails works just fine

    bug 
    opened by fuhrmeistery 5
  • [Bug] Inline quotes obfuscated with history

    [Bug] Inline quotes obfuscated with history

    Describe the bug Inline quotes, i.e. text marked as "quote" within the body of emails coming from Gmail is not displayed until "show history" is clicked.

    To Reproduce

    1. Compose an email on Gmail. Mark some of the text as "quote". Send to your Protonmail address.
    2. Open the email on the Android app.
    3. Click "show history".

    Expected behavior Quoted block already visible on step 2.

    Actual behaviour Quoted block is completely hidden (no indication whatsoever as to its existence) on step 2, appears only on step 3.

    Screenshots photo_2023-01-01_16-04-33 photo_2023-01-01_16-04-33 (2)

    Smartphone

    • Device: Huawei P40 lite
    • OS: Android 10

    Additional info This problem does not occur on the browser, where history is succesfully hidden in parallel to shown quoted blocks. Nor does this happen on the Android app with emails coming from Protonmail, or at least not when I mailed myself. Haven't tested it with emails quoted & incoming from other providers (i.e. neither Gmail nor Protonmail)

    bug 
    opened by Konotorious 0
  • Android Calendar source code

    Android Calendar source code

    Hello, Sorry for choosing not the best fitting repo to post this question to, but where can I find the source code for Proton Calendar Android application?

    opened by bgodlin 0
  • [Bug] Reporting phishing does not work

    [Bug] Reporting phishing does not work

    Describe the bug When attempting to report an email as a phishing attempt, an error with "Cannot send report" appears.

    To Reproduce Steps to reproduce the behavior:

    1. Go to the email in question
    2. Click the 3 dots to get the menu
    3. Hit "Report phishing"
    4. The menu confirming if you want to send it appears, click "Send"
    5. Error "Cannot send report" appears

    Expected behavior The phishing report is actually sent and confirmed.

    Smartphone

    • Device: Pixel 7
    • OS: GrapheneOS TD1A.221105.001.2022120300
    • Version: 3.0.9
    bug 
    opened by sawft99 0
  • [Bug] Broken formatting

    [Bug] Broken formatting

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Steps to reproduce the behavior:

    1. Go to Inbox
    2. Click on emails from alias email addresses
    3. See error. The design is broken like no css. No load remote images option even when that email has images

    Expected behavior Should show load remote images button and load emails as it is sent i.e. with proper formatting.

    Screenshots

    How it loads

    https://privatebin.net/?ef1e9bd4f17e1dc2#BD9sdg7uuvcwCmH1HKzyrsKRj5fia8SjL1jt66sh48PP

    How it should load

    https://privatebin.net/?ecde34fece8c0cca#A3UUFeUDggGMd5J9L6hMJX7dkYhyBbS54HCA3CTRiWtW

    Smartphone (please complete the following information):

    • Device:Any device
    • OS: Android 10,13
    • Version Latest

    Additional context

    Its not reported by everyone so I believe pgp encryption is causing issue. I havent disabled and tested it because emails load fine in desktop browser. I use anonaddy and use protonmail pgp to encrypt thier emails. Only those alias emails has this issue.

    opened by Gottarocket 0
  • [Bug] ProtonMail mobile app stalls on everything after large email & contacts import

    [Bug] ProtonMail mobile app stalls on everything after large email & contacts import

    Describe the bug

    After importing a large amount of email, contacts, etc (~200k email threads, ~20GB, ~300 labels, ~10k contacts) from Gmail using Proton Mail Easy Switch, the Android app stalls on startup, sync, direct invocation of message composition via the home screen widget, etc. These were all working fine before the import, and broke after, so I'm fairly sure that's the cause.

    The website version, on Android Chrome, does not have this problem. I have not tested other clients.

    To Reproduce Steps to reproduce the behavior:

    1. Use the Android app
    2. Go to https://account.proton.me/u/0/mail/easy-switch and import an account with a large amount of emails, contacts, labels, etc.
    3. Try to use the Android app and have everything freeze
    4. Notice that the sync notification is also frozen, and there are no "new mail received" notifications
    5. Notice that in the web app, opening the sidebar is slow (and hard to scroll) due to large number of flattened labels. (See note on Easy Switch in suggested fixes below.)

    Expected behavior

    UX: Should work as fast as before import.

    Code:

    My guess is that the problem is from any combination of a few things:

    • trying to store a local index of the whole mailbox
    • trying to keep all gmail-imported labels in RAM
    • trying to keep all contacts in RAM
    • … etc

    I suggest, in increasing complexity:

    • Lazy load things wherever possible.
    • Save user input (eg draft emails) before doing anything that might be a stallingly-large select.
    • Separately store the N most recently used items in each category, require intentional action by user to load more.
    • Store recent mail, labels, contacts, etc in some sort of RAM-optimised manner to minimise both cache misses and unneeded cache size (eg a prefix tree if the rest can fit on SD card).
    • During Easy Switch, and in labels/folders editors, allow user to easily map imported labels/folders to existing ones. (Currently, it actually prohibits using an imported label that is identical to an existing label, and it prohibits nested/labels/like/this, transforming them to not-nested-labels-like-this, which makes for way more items at the root level. Which means I'll have to run sieves to re-label everything,)
    • Auto sort labels & folders by alpha unless told not to. Make "sort by" an option, default "alpha", other options: "manual" (i.e. current behaviour), "date added" (i.e. label made), "date updated" (e.g. most recent email with this label received). In UX, encourage use of nested (i.e. /-delimited) labels & folders.
    • Explicitly treat RAM as a cache for SD card as a cache for web request, with RAM on heavy limits against ballooning.
    • Meta-tag contacts, labels, emails, etc as directly user-made (e.g. typed by hand, interacted with, etc) vs bulk. Don't autoload the bulk ones where avoidable (exception: recent email).
    • Use label/folder tree structure for RAM saving — don't keep unexpanded nodes in RAM.
    • Run a performance check on phone to find out how many labels, contacts, emails, whatever causes it to take an excessive performance hit (just generate fake ones locally for test, co-process to check wall time for lookup, insert, etc), and use the results to tune limits on how many to store in RAM / SD card.
    • Have a continuous reaper co-process that monitors whether the main process is taking too long, going into swap, causing device to overheat, or the like — especially for core operations like sync, read recent mail, and compose mail — and have it early abort that operation without affecting anything else if possible (e.g. if it's a list operation, return a limited # of results, with UI saying so); if not possible, kill and auto-file bug report stating the performance, operation type, and progress at which it stalled (should be easy to anonymise). Make sure the kill doesn't harm user input like message composition; if anything it should to the opposite (eg if composing a message triggers an over-limit contacts lookup, early terminate the lookup and let the user keep writing, and save the draft).

    Smartphone (please complete the following information):

    • Device: Samsung Galaxy S9
    • OS: Android 10
    bug 
    opened by saizai 4
  • [Feature Request] “Toggle read status” swipe action

    [Feature Request] “Toggle read status” swipe action

    Currently, “Mark as read” swipe action does nothing when the message is already read. It would be more useful if it were a toggle, so that you wouldn’t have to make an extra tap to mark something unread.

    enhancement 
    opened by natewind 1
Releases(3.0.9)
Owner
null
Arjun Naik 1 Apr 16, 2022
Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

MindOrks 1.2k Dec 29, 2022
Android-basics-kotlin-tip-time-app - Tip Time app from Android Basics in Kotlin

Tip Time Tip Time app from Android Basics in Kotlin at developers.google.com. It

Ramon Lima e Meira 0 Jan 2, 2022
Environmental-Monitoring-Android-App - This Android App is used to monitor environmental parameters data from remote sensors

Environmental-Monitoring-Android-App - This Android App is used to monitor environmental parameters data from remote sensors. Parameters includes but not limited to temperature, humidity, air quality, level of Ionizing radiation, ...

Francisco Pascal Elias TAMBASAFIDY 0 Jan 4, 2022
Library to change Android launcher App Icon and App Name programmatically !

AppIconNameChanger Change Android App launcher Icon and App Name programmatically ! Download Demo APK from HERE Kindly use the following links to use

Prabhakar Thota 587 Dec 29, 2022
HideDroid is an Android app that allows the per-app anonymization of collected personal data according to a privacy level chosen by the user.

HideDroid An Android App for preserving user privacy HideDroid is an Android app that allows the per-app anonymization of collected personal data acco

null 100 Dec 12, 2022
Water tracker app helps you with daily reminder to drink water. This app is just a trial to test and improve my android development skills.

?? About Me I am a self-thaught developer learning web and android development. This app is just a trial to test and improve my android development sk

Sinan Sonmez (Chaush) 28 Dec 17, 2022
Visual Studio App Center Sample App for Android

Visual Studio App Center Sample App for Android The Android application in this repository and its corresponding tutorials will help you quickly and e

Yourhomeplan 1 Oct 13, 2021
Android app for Ribbit, Broker API Reference App

Ribbit Reference Implementation (Android) The reference implementation for designing the Android user interface of a broker-dealer trading application

Alpaca 12 Nov 24, 2022
Android-Java-App - Notepad app with user and password. SQL Lite

DVNote2 App Android-Java-App Notepad app with user and password Application made in Android Studio with Java language and SQLite database. How does it

DViga 1 Nov 6, 2021
Android Bitcoin market app base on Jetpack Compose and MVI. The app displays current bitcoin market price and history price k-line charts.

compose-bitcoin Android Bitcoin market app base on Jetpack Compose and MVVM & MVI. Features Current bitcoin market price. K-line charts of history pri

Chen Pan 3 May 20, 2022
App for lesson 8 of the Android App Development in Kotlin course on Udacity

Connect to the Internet - Mars Real Estate This is the toy app for Lesson 8 of t

Michael Pessoni 1 Dec 28, 2021
Android Camper parking app written in kotlin for assignment 2 of Mobile App Development

Technical Report Splash view Application shows a splash screen when opened. The

Alvaro Sanchez Domingo 1 Sep 9, 2022
null 1 Jan 7, 2022
Quiz-App - An Android app which have some basic questions

Quiz-App An Android app which have some basic questions Start page Questions pag

Gururaj KL 3 Apr 21, 2022
A Task Management and Habit-building App, representating my journey in Android as well as my first Kotlin App. 🤗 ✨

A Task Management and Habit-building App, representating my journey in Android as well as my first Kotlin App. ?? ✨

Sarthak Musmade 8 May 8, 2022
An Android app for Dokuz Eylul University students can make use of multiple school websites in this one app

An Android app for Dokuz Eylul University students can make use of multiple school websites in this one app

Eyüb Salih Özdemir 3 Apr 13, 2022
Advanced Android Weather App using MVVM Architecture Sample (ViewModel + LiveData + Kotlin + volley) = Weather App

Advanced Android Weather App using MVVM Architecture Sample (ViewModel + LiveData + Kotlin + volley) = Weather App Video Weather.-.HD.720p.mov Introdu

wykee2 4 Jul 12, 2022
Android App to save shares from any app into a file.

Save To… Android App to save shares from any app into a file. Download · Website · Contact About the Project Exporting data from any app into a file m

Daniel Gehrer 2 Oct 19, 2022