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 made simple. Just open the share options, select “Save To…” and choose the target file. Done. No permissions required.

More infos on the official website: xa1.at/saveto.

Background on blog post: I Published My First App on the Google Play Store

Tech Stack

Native Android App.

Maximum Privacy. No Permissions required. Not even internet access.

Features

  • Introduction Guide
  • Open from Share Dialog and save shared item into a file.
  • Settings

Color Reference

Color Hex
Primary Color #ff8f00

Getting Started

Prerequisites

  • Android Studio
  • Java 11+
  • sh

Code Checks

Before committing run:

./debugCheck.sh

This compiles the code, runs ktlint, unit tests and android tests.

Package-Structure

  • at.xa1.saveto: main package with the most fundamental classes (like MainActivity and MainCoordinator)
    • common: generic, non-app-specific classes
      • android: generic, non-app-specific classes that are strongly related to Android.
    • di: Dependency Injection.
    • feature: sub packages contain pieces of functionality, that don’t depend on other features.
    • ui: User interface components that are not feature specific.

Release

This is only relevant for the deployer.

  1. Update versionCode and versionName in versions.gradle
  2. Run:
    ./release.sh
  3. Upload app/build/outputs/bundle/release/app-release.aab to Google Play Console.

Signing

Signing is located in .signing folder. It is added to .gitignore to avoid accidental committing. Extract release.jks (and private_key.pepk) from Password Manager to .signing.

Create .signing/keystore.properties:

keyAlias=releaseKey
keyPassword=[PASSWORD FROM PASSWORD MANAGER]
storeFile=.signing/release.jks
storePassword=[SAME PASSWORD FROM PASSWORD MANAGER]

Create Screenshots

  • Start Emulator.
  • Make sure status bar is empty.
  • Make sure battery, network and wifi are full (emulator settings).
  • Use gesture navigation to hide navigation buttons (android settings).
  • Set time to: 04:01 (android settings).
  • Use tests in PlayStoreScreenshots for individual screens.
    • Uncomment Thread.sleep in waitForScreenshot function to have a chance in making screenshots.

Roadmap

  • Return OK Result when finished successfully
  • Show KB copied
  • Show Success
  • Show Error
  • Propose Filename
  • Support Plain Text
  • Make Scrollable
  • Dependency Injection
  • List open source licenses
  • Settings
  • Intro
  • Screenshots
  • Feature graphic
  • https://xa1.at/saveto/ site
  • Review package and file structure
  • Show version in settings
  • CI setup
  • Bug: Shouldn’t be possible to open from recents.
  • Abort (back button)
  • Support multiple files shared at once.

License

Distributed under BSD 3-Clause License. See LICENSE for more information.

Contact

Attributions

README inspired by Louis3797/awesome-readme-template.

Google Play and the Google Play logo are trademarks of Google LLC.

GitHub

View Github