logo

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.

Share dialog screenshot Save dialog screenshot Success screenshot

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

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

Get it on Google Play

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 #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