Legacy Zulip Android app

Related tags

App zulip-android
Overview



Zulip for Android (legacy)

Note: This project is deprecated in favor of our React Native app, which supports both iOS and Android.


This is the legacy native Android client for Zulip. It is available in the Google Play store. If you have a taste for adventure, you can also join our beta channel after which the Play store should auto-update you. (Caution: beta releases will have more bugs than final releases, including (potentially) security or data loss bugs.)

This is a Gradle project, and can be built via the provided gradlew or by using Android Studio.

Index

Getting Started

  • First, clone this repository and follow the Android Studio build instructions (below) to compile the project. If you don't have an existing Zulip account to login with, you can create one on the Zulip development community server at https://zulip.tabbott.net/. Note that this server is used for development discussions, so don't use it for sending lots of test messages!
  • For testing, it can be helpful to have your own Zulip development server that the app can connect to. Instructions for setting up a Zulip development server are here: http://zulip.readthedocs.io/en/latest/dev-overview.html
  • And then follow the Connecting to a development server guide to get the Android app to connect to the Zulip development server.

Getting Help

  • For real-time help, you can join the Zulip development community's Zulip server at https://zulip.tabbott.net and post on the android stream.
  • For questions on development for the Zulip Android App you can post here:

https://groups.google.com/forum/#!forum/zulip-android

  • For questions on development for the Zulip Server you can post here:

https://groups.google.com/forum/#!forum/zulip-devel

Any issues or bugs should be posted in the Github Issue Tracker!

Build instructions (Android Studio)

  1. Fork the zulip-android repository from GitHub and clone your fork.

  2. Open the project in the IDE.
    1. From the "Welcome to Android Studio" menu, select "Open an existing Android Studio project" option, or
    2. If you already have an opened project, select "File > Open..."
  3. If you want to test Google sign in, add the required metadata:
    1. Go to https://developers.google.com/mobile/add?platform=android

    2. Type in "Zulip" as "App name" and "com.zulip.android" as "Android package name" and continue to Choose and configure services.

    3. Select the "Google Sign-In" service, you'll need to provide the SHA-1 of your signing certificate. For that, first follow the manual instructions to Sign Your Release Build and generate a new Key Store if you haven't already: https://developer.android.com/studio/publish/app-signing.html#release-mode

    4. Use keytool to get the SHA-1 fingerprint of the certificate: keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>

    5. Put the generated file in the "app/" directory of the project.

    6. Get your Google app id from the Google Developer console, and add it as the following string resource in app/src/main/res/values/strings.xml:

      <string name="google_app_id">GOOGLE_APP_ID</string>
      

If you have a device running Android go to the settings and enable USB debugging in developer options. Then plug your device in the computer and select "Run > Run...". You will be shown "Device chooser" window. Select your device in the given list and press "OK".

If you do not have an Android device you will have to run it on an emulator. Here are instructions for creating an Android virtual device (AVD):

http://developer.android.com/tools/devices/managing-avds.html#createavd

Build instructions (without Android Studio)

  1. Install the Android SDK including at least the API 23 (Android 6.0), Build Tools, API Platform, Google APIs, Google Play Services, Android Support Library, the Local Maven Repository for Support and the Google Repository.

    All of these can be installed, together with their dependencies, using the Android SDK manager.

  2. Comment out or remove references to Crashlytics. The following are known references as at 5de0b0e. For future versions, grep -ir crashlytics . is your friend.

    If you do not remove Crashlytics then the app will crash on startup unless Crashlytics has been set up correctly as a member of the zulip team.

  • In app/src/main/java/com/zulip/android/ZLog.java:
    • Line 5: import com.crashlytics.android.Crashlytics;
    • Line 13: Crashlytics.logException(e);
  • In app/src/main/java/com/zulip/android/ZulipActivity.java:
    • Line 50: import com.crashlytics.android.Crashlytics;
    • Line 162: Crashlytics.start(this);
  1. Run ./gradlew (or gradlew.bat on Windows). This should automatically build the application, downloading anything it needs to do so.

    If you get a failed build with A problem occurred configuring project ':app'. then you might not have all the required SDK libraries. Make sure that you have all the dependencies of the libraries listed above, and that all versions match precisely.

    If the appropriate tools cannot be found by gradle, make sure that ANDROID_HOME is properly set (this should point to the root directory for the Android SDK i.e. the one which contains the add-ons, build-tools, docs and other directories).

  2. To build the APK, run ./gradlew assemble. Your APKs will be placed in app/build/outputs/apk.

    The app-debug.apk can be installed directly on the device, or loaded over USB using ./gradlew installDebug or adb install /path/to/app/build/outputs/apk/app-debug.apk.

    Note that app-release-unsigned.apk will not install by default because it is unsigned. You will be told the APK cannot be parsed.

Connecting to a development server

Once you are running a Zulip development server on your laptop, you will need to do some additional configuration of the Android development environment to connect to your development server.

If you are using a Genymotion Emulator you can access the server by browsing to http://10.0.3.2:9991 or http://10.0.3.1:9991 (one of these two URL’s)

To access the vagrant server on a physical device:

  • connect the computer and Android device to the same network (router)

  • modify VagrantFile here in the server change the host_ip ‘127.0.0.1’ to ‘0.0.0.0’ Like this-

    config.vm.network “forwarded_port”, guest: 9991, host: host_port, host_ip: “0.0.0.0”

  • Now find the IP address of the computer, and start the Android app. For the server, specify the computer's IP address and port number as the Zulip Server. For example:

    192.168.0.1:9991

    Note that if you have internet access on your android device through a proxy server, you might have to use a VPN application like this one to connect to the server.

You can also route the IP address to a domain name like www.local.test.com (this routing is useful when testing the Google OAuth Backend)
No need to modify the VagrantFile to achieve this
  • Remap the hosts by fiddler by adding this line in TOOLS> HOSTS

    localhost:9991 www.local.test.com

If unclear you can follow tutorial here Host Remapping

  • Now configure your android device following this detailed tutorial

Another way to connect android device to local server is via adb

  • Run server on laptop(or Desktop)
  • By default, it run's on port 9991
  • Connect your Android device with laptop and enable usb debugging
  • Run adb reverse tcp:9991 tcp:9991 in terminal
  • Connect to local server by entering url (http://127.0.0.1:9991) in app

Contributing

  • If you're excited about helping with an open issue, make sure to claim the issue by commenting the following in the comment section: "@zulipbot claim". @zulipbot will assign you to the issue and label the issue as in progress. For more details, check out @zulipbot.
  • For commit messages, be sure to checkout our commit message style guidelines.
  • For code style, please read the Zulip coding style conventions carefully.

Mailing List

There's a mailing list for questions and development discussions related to the Zulip Android app: https://groups.google.com/forum/#!forum/zulip-android.

Export

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

License

Copyright 2012-2016 Dropbox, Inc.

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.

Comments
  • feature :  add tablet layout.

    feature : add tablet layout.

    Add tablet layout showing navigation drawer all the time.

    Fixes #453 .

    Summary of changes

    [Explain here what changes were made and why.]

    Screenshots or a brief video showing the change in action:

    Please make sure these boxes are checked before submitting your pull request - thanks! Guide

    • [x] Code is formatted.

    • [x] Run the lint tests with ./gradlew lintDebug and make sure BUILD is SUCCESSFUL

    • [x] If new feature is implemeted then it is compatible with Night theme too.

    • [x] Commit messages are well-written.

    opened by divs4debu 48
  • Register app to share all types of files and add attachment uploads feature

    Register app to share all types of files and add attachment uploads feature

    Summary of changes Fixes #398

    • add support for sharing files To allow sharing of all types of files I have used the following intent filter.
    <intent-filter>
                    <action android:name="android.intent.action.SEND" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:mimeType="*/*" />
    </intent-filter>
    
    • add support for attachment uploads notifications are used to during uploads. notification
    • multiple uploads supported
    • implemented a dialog fragment with custom layout for photo and file uploads buttons. screenshot_20170225-045432 screenshot_20170225-045457
    • fixed filepathheper

    I haven't been able to achieve desired performance for progress update because retrofit 2 doesn't support progress update during network calls and hence I implemented a hack to work around it. I'll update the pr as soon as I find a better solution for this.

    EDIT: Fixed the performance issue.

    opened by Sam1301 45
  • Fixes #153: Show in-app new messages notifications snackbar

    Fixes #153: Show in-app new messages notifications snackbar

    Shows a snackbar in the top, snackbar message text changes according to private/stream messages and also changes text if messages from multiples topics/private messages recieved!

    opened by kunall17 35
  • Sorted people drawer Active->Recent->New Chat

    Sorted people drawer Active->Recent->New Chat

    This PR includes:-

    • Sorting people list in order of active, recent and new chat.

    • Before whenever status is fetched from server list is automatically scrolled to top. Replaced ListView with recyclerView to solve this and make heading labels in list.

    screenshot_20170112-201351

    opened by jainkuniya 33
  • Fixes #290: Add edit message feature

    Fixes #290: Add edit message feature

    This PR fixes #290. It includes a feature to edit a message sent (just like web). It has following features:

    1. On long pressing a message sent by an user.

    rsz_11

    2. By selecting Edit message, it first checks for the maximum 30 minutes duration.

    • If time duration exceeds 30 minutes. then it shows a Toast like this:

    rsz_2

    • Else pops up a Dialog Box to edit message content like this:

    rsz_13

    3. After user edit content and clicks OK then a ProgressDialog starts stating Editing message like this:

    rsz_14

    Meanwhile a PATCH request is made to server for editing the content of message.

    4. If message is successfully edited then a Toast appears saying Message Edited.

    rsz_15 Meanwhile RecyclerView is also notified about the data set changed.

    @kunall17 @timabbott Please review this PR.

    opened by yadav-rahul 30
  • Add photo uploads, cropping and marking tools

    Add photo uploads, cropping and marking tools

    EDIT Added two Activities

    1. PhotoSendActivity to crop captured image and/or upload photo. This uses CropImageView of https://github.com/ArthurHub/Android-Image-Cropper open source library as a View.

    2. PhotoEditActivity to allow drawing on captured image and upload this edited photo. This uses a custom view DrawCustomView

    • Improved performance of bitmap decoding. https://drive.google.com/open?id=0B4jK5QX65b0ZMHFPYWlwNERqS2c
    opened by Sam1301 26
  • Fetch raw message content before editing

    Fetch raw message content before editing

    Summary of changes

    [Explain here what changes were made and why.]

    This now fetches the raw message before editing to save the formatted content (like emojis, mention @)

    Still one thing can be noticed after edit is successful, the updated raw content is displayed instead of the formatted content, but after list reload it start's showing fine.

    I'll update the PR if I find solution for this!

    Please make sure these boxes are checked before submitting your pull request - thanks! Guide

    • [x] Code is formatted.

    • [x] Run the lint tests with ./gradlew lintDebug and make sure BUILD is SUCCESSFUL

    • [x] If new feature is implemeted then it is compatible with Night theme too.

    • [x] Commit messages are well-written.

    opened by kunall17 25
  • Implement Mute topics

    Implement Mute topics

    #9,#10

    Muting topics in the HomeView removes them from the homeView, and are visible in their respective streams. Topics can be unmuted from the context menu of their streams.

    Screenshots: Muting Topics by context menu in the Homeview Unmuting Topics by context menu in the Streams

    enhancement 
    opened by kunall17 24
  • Implemented Expandable ListView in the streamsDrawer

    Implemented Expandable ListView in the streamsDrawer

    This PR changes the current listView used in the streamsDrawer and insert child View's to display the corresponding Subjects/Topics to the related streams

    Preview: expandlistview

    opened by kunall17 23
  • Added floating recipient bar.

    Added floating recipient bar.

    Fix:#385

    Summary of changes

    Screenshots or a brief video showing the change in action: ezgif com-video-to-gif 9

    Please make sure these boxes are checked before submitting your pull request - thanks! Guide

    • [x] Code is formatted.

    • [x] Run the lint tests with ./gradlew lintDebug and make sure BUILD is SUCCESSFUL

    • [x] If new feature is implemeted then it is compatible with Night theme too.

    • [x] Commit messages are well-written.

    needs review 
    opened by jainkuniya 21
  • Implemented RecyclerView inplace of ListView + UI updated

    Implemented RecyclerView inplace of ListView + UI updated

    Replaced the current listview with RecyclerView

    Screenshot: screenshot from 2016-07-07 18-53-38

    GIF: [ I had no internet in this recording of the Gif so the gravatars are not loaded and they are shown as placeholders! ] ezgif-4169072805

    opened by kunall17 21
  • Adds an arrow in front of a expandable stream to expand and contract …

    Adds an arrow in front of a expandable stream to expand and contract …

    …that stream.

    Summary of changes When a user clicked on a stream in the stream pane, it narrows down the stream. Now if a user clicks on the stream it expands the stream and shows the topics that the stream contains. Screenshots or a brief video showing the change in action:

    ezgif com-optimize 3

    Please make sure these boxes are checked before submitting your pull request - thanks! Guide

    • [x] Code is formatted.

    • [x] Run the lint tests with ./gradlew lintDebug and make sure BUILD is SUCCESSFUL

    • [x] If new feature is implemeted then it is compatible with Night theme too.

    • [x] Commit messages are well-written.

    opened by abhaymaniyar 8
  • Add tutorial sliders for first time launch of app

    Add tutorial sliders for first time launch of app

    Summary of changes

    Fixes https://github.com/zulip/zulip-android/issues/161

    Please make sure these boxes are checked before submitting your pull request - thanks! Guide

    • [x] Code is formatted.

    • [x] Run the lint tests with ./gradlew lintDebug and make sure BUILD is SUCCESSFUL

    • [x] If new feature is implemeted then it is compatible with Night theme too.

    • [x] Commit messages are well-written.

    reviewed 
    opened by saketkumar 8
  • Fixes #433, Fixed disappearing ProgressDialog on touch

    Fixes #433, Fixed disappearing ProgressDialog on touch

    Fix:433

    Summary of changes

    While connecting to server, refreshing, deleting a db or at the time of logout, Progress dialog box won't be dismissed by taping outside the box.

    • [x] Code is formatted.

    • [x] Run the lint tests with ./gradlew lintDebug and make sure BUILD is SUCCESSFUL

    • [x] If new feature is implemeted then it is compatible with Night theme too.

    • [x] Commit messages are well-written.

    opened by DravitLochan 12
  • Show unread counts and add bankruptcy option.

    Show unread counts and add bankruptcy option.

    Summary of changes

    • shows unread counts

      • real-time sync with server using update_message_flags event
      • UI changes
    • bankruptcy menu option

      • fetch all messages in batches of 200
    • fetch 1000 messages on start-up (related discussion https://github.com/zulip/zulip-android/pull/283#issuecomment-273869004)

    opened by Sam1301 8
Owner
Zulip
Chat for distributed teams
Zulip
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