Skip to content

FileEx is a Android File Manager that currently offers basic implementation of a file explorer in a fragment and will be extended to offer numerous cloud and network storage types in the future.

Notifications You must be signed in to change notification settings

ben-lotze/file-ex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FileEx

Final Capstone Project in Udacity Android Nanodegree

Screenshots

Custom navigation drawer

File browser

Favorite manager with swipe to remove functionality and transition

Favorite manager (edit/new)

Permission handling on API level >23

Features

User Interface

  • Using AppBarLayout and Toolbar
  • Custom NavigationDrawer (swiping in from left screen side)
    • exchanged default implementation (with NavigationView) for a custom layout using ConstraintLayout and RecyclerViews for (1) custom favorites from database and (2) phones storage places (extrernal storage, additional SD card, root folder), depending on what is available/readable
    • user favorites get populated with defaults (Camera/DCIM, downloads) on database creation time
    • showing free/used space of each phone storage with graphical representation
  • Varying layouts in RecyclerView for different view types
    • music files show actual meta data (cover art, title, artist, length, ...) using JAudiotagger
    • remaining files use thumbnails with Glide and file name
    • more types coming soon
  • Managing local favorite folders (loading all favorites from local SQLite database into RecyclerView via Loader from ContentProvider):
    • Swipe to remove favorites
    • Click to edit with custom transition on favorite's image (which both Activities have in common)
    • FloatingActionButton to add new favorite
    • Checking user inputs: selecting a folder and a favorite's name is mandatory (the folder's name is automatically selected as the default name after selecting folder)
    • Folder selection in new Activity with another instance of the folder explorer fragment
  • Simple widget offering shortcuts to important phone storage places and local favorites (user customizable in future versions)

File Browser

  • folder contents are loaded in background thread
  • click handling: files can be viewed in associated default app (offering app selection if multiple apps available)
  • the file browser lives in a Fragment to be able to use multiple file browser instances in multiple fragments (tablet layout, multiple tabs) in the future
  • each Fragment holds its own browsing history
    • phone back button navigates back in browsing history
    • implemented via callback interface that checks if the fragment could handle the back button press (as long as the current active Fragment's browsing history is not empty) or not (in which case the back button is handled by the system's default behaviour)

Google Play Services

  • All screens contain an advertisement from AdMob (Firebase integrated) and test ads on Emulators
  • Analytics tracks user actions such as selecting elements from NavigationDrawer (without storing personal identifiable information such as folder names!)

Data Persistence

  • SQLite database for local favorite folders for name, folder and custom image
    • data gets exposed via Content Provider
    • Views in Fragments/Activities get populated via Loader
  • Saving instance state on rotation

More

  • permission handling with popup on API version Marshmellow and above (API level >23)
  • Support for accessibility using content descriptions
  • RTL layout switching on all layouts
  • using signing configuration (with keystore definition stored in configuration file not in github) to use installRelease from Gradle tasks

Libraries

Third Party Libraries

  • Glide for image loading
  • JAudiotagger for audio meta data (handled in Gradle using jitpack.io)
  • Butterknife for View binding
  • Timber logging
  • Firebase Core (Analytics)
  • Firebase Ads

Google support/design

  • ConstraintLayout
  • support:design
  • support-v4
  • appcompat-v7
  • RecyclerView

About

FileEx is a Android File Manager that currently offers basic implementation of a file explorer in a fragment and will be extended to offer numerous cloud and network storage types in the future.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages