explaingit

zhanghai/materialfiles

8,295KotlinAudience · generalComplexity · 1/5LicenseSetup · easy

TLDR

An open-source Android file manager with Material Design styling that handles network storage (FTP, SFTP, SMB, WebDAV), root access, archives, and Linux filesystem details that most Android file managers get wrong.

Mindmap

mindmap
  root((materialfiles))
    Features
      File management
      Network storage
      Archive handling
      Root access
    Network protocols
      FTP and SFTP
      SMB and WebDAV
    UI
      Material Design
      Night mode
      OLED black option
    Technical
      Linux syscalls
      Symbolic links
      File permissions
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Browse and manage files on Android with a Material Design interface that supports dark mode and an OLED true-black option.

USE CASE 2

Connect to a home NAS or server over SFTP or SMB from your Android phone to access and transfer files.

USE CASE 3

Extract or create compressed archives directly on Android without a separate app.

USE CASE 4

Access the full Android filesystem on a rooted device, including system files with correct permission and SELinux context display.

Tech stack

KotlinAndroidJava

Getting it running

Difficulty · easy Time to first run · 5min
Free to use and modify, but any distributed version must also be open-sourced under the same GPL v3 license.

In plain English

Material Files is an open-source file manager for Android, available on Google Play, F-Droid, and as a direct APK download from GitHub. It targets Android 5.0 and above. The project was built because the author wanted a file manager that followed Material Design closely, came with full source code available for inspection, and used sound technical foundations rather than shortcuts. The app covers the basics you expect from a file manager: navigating folders with breadcrumb trails, viewing and moving files, and handling common archive formats (view, extract, and create compressed files). It also reaches further than many alternatives: it can connect to FTP, SFTP, SMB, and WebDAV servers to browse network-attached storage, and it supports root access for users whose Android devices have been rooted. The UI supports color customization and a night mode with an optional true-black option for OLED screens. On the technical side, the app communicates with the filesystem through Linux system calls directly rather than parsing the output of the ls command, which is a common shortcut that causes problems with unusual filenames and newer Android versions. It also understands Linux concepts like symbolic links, file permissions, and SELinux context, similar to how file managers on Linux desktops work. File names with malformed encoding are handled correctly, which many other Android file managers fail to do. The project is written in Kotlin and licensed under the GNU General Public License version 3. Source code is on GitHub and translations are coordinated through Transifex. If you include Material Files in a custom Android ROM, the author asks that you not replace the system DocumentsUI app with it (they are different things), that you allow users to uninstall it, and that you be careful with APK signing to avoid blocking users from receiving updates through app stores.

Copy-paste prompts

Prompt 1
I want to connect Material Files on my Android to my home Synology NAS over SMB. What connection settings do I need to configure?
Prompt 2
How do I enable root access in Material Files to browse protected system directories on my rooted Android phone?
Prompt 3
I'm including Material Files in a custom Android ROM. What does the author ask ROM builders to be careful about?
Prompt 4
Material Files shows incorrect file permissions on my rooted device. How does the app read Linux permissions, and what might cause a mismatch?
Open on GitHub → Explain another repo

← zhanghai on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.