Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adityak368/Android-FileBrowser-FilePicker
A FileBrowser / FileChooser / FolderChooser for Android that you can integrate to your app to browse/select files from internal/external storage
https://github.com/adityak368/Android-FileBrowser-FilePicker
android androidfilepicker browser filebrowser filechooser filesearch fileselector filesystem folderchooser
Last synced: 3 months ago
JSON representation
A FileBrowser / FileChooser / FolderChooser for Android that you can integrate to your app to browse/select files from internal/external storage
- Host: GitHub
- URL: https://github.com/adityak368/Android-FileBrowser-FilePicker
- Owner: adityak368
- License: mit
- Created: 2017-04-17T16:46:18.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-06-08T21:29:10.000Z (over 4 years ago)
- Last Synced: 2024-06-16T06:34:05.753Z (5 months ago)
- Topics: android, androidfilepicker, browser, filebrowser, filechooser, filesearch, fileselector, filesystem, folderchooser
- Language: Java
- Homepage:
- Size: 608 KB
- Stars: 165
- Watchers: 7
- Forks: 45
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-github-android-ui - Android-FileBrowser-FilePicker - Android文件浏览器文件选择器 (文件操作)
README
# FileBrowser
A FileBrowser / FileChooser for Android that you can integrate to your app to browse/select files from internal/external storage.
[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Android--FileBrowser--FilePicker-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/5636)
# Using Maven
``` xmlcom.adityak
browsemyfiles
1.9
pom```
# Or Using Gradle
```
compile 'com.adityak:browsemyfiles:1.9'
```
It easily integrates with your app's color scheme. You can change the color scheme using the following in your styles.xml
``` xml
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
@color/actionModeToolbar
```There are 3 main classes to use the library.
1. FileBrowser - Used to just Browse files in storage (has all file IO features)
2. FileChooser - Used to select single/multiple files in storage (has some IO features)
3. FolderChooser - Used to select single/multiple folders in storage (has some IO features)
4. FileBrowserWithCustomHandler - Used to run custom code when files are selected (has all IO features)# 1. FileBrowser
Use following Intent to start the FileBrowser``` java
Intent i4 = new Intent(getApplicationContext(), FileBrowser.class);
startActivity(i4);
```# 2. FileChooser
Use following Intent to start the FileChooser
- For Single Selection``` java
Intent i2 = new Intent(getApplicationContext(), FileChooser.class);
i2.putExtra(Constants.SELECTION_MODE, Constants.SELECTION_MODES.SINGLE_SELECTION.ordinal());
startActivityForResult(i2, PICK_FILE_REQUEST);
```To get the selected file, In your calling activity's onActivityResult method, use the following
```java
if (requestCode == PICK_FILE_REQUEST && data!=null) {
if (resultCode == RESULT_OK) {
Uri file = data.getData();
}
}
```- For Multiple Selection
``` java
Intent i2 = new Intent(getApplicationContext(), FileChooser.class);
i2.putExtra(Constants.SELECTION_MODE, Constants.SELECTION_MODES.MULTIPLE_SELECTION.ordinal());
startActivityForResult(i2, PICK_FILE_REQUEST);
```To get the selected file, In your calling activity's onActivityResult method, use the following
```java
if (requestCode == PICK_FILE_REQUEST && data!=null) {
if (resultCode == RESULT_OK) {
ArrayList selectedFiles = data.getParcelableArrayListExtra(Constants.SELECTED_ITEMS);
}
}
```# 3. FolderChooser
Use following Intent to start the FolderChooser
- For Single Selection``` java
Intent i2 = new Intent(getApplicationContext(), FolderChooser.class);
i2.putExtra(Constants.SELECTION_MODE, Constants.SELECTION_MODES.SINGLE_SELECTION.ordinal());
startActivityForResult(i2, PICK_FOLDER_REQUEST);
```To get the selected folder, In your calling activity's onActivityResult method, use the following
```java
if (requestCode == PICK_FOLDER_REQUEST && data!=null) {
if (resultCode == RESULT_OK) {
Uri file = data.getData();
}
}
```- For Multiple Selection
``` java
Intent i2 = new Intent(getApplicationContext(), FolderChooser.class);
i2.putExtra(Constants.SELECTION_MODE, Constants.SELECTION_MODES.MULTIPLE_SELECTION.ordinal());
startActivityForResult(i2, PICK_FOLDER_REQUEST);
```To get the selected file, In your calling activity's onActivityResult method, use the following
```java
if (requestCode == PICK_FOLDER_REQUEST && data!=null) {
if (resultCode == RESULT_OK) {
ArrayList selectedFiles = data.getParcelableArrayListExtra(Constants.SELECTED_ITEMS);
}
}
```# 4. FileBrowserWithCustomHandler
Register a Broadcast receiver and handle the onReceive method like below
```java
public class FileSelectedBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Uri filePath = intent.getParcelableExtra(com.aditya.filebrowser.Constants.BROADCAST_SELECTED_FILE);
}
}```
Register the receiver like the following snippet
``` xml
```If you also need some other parameters to be sent with the broadcast use the following when creating the activity
``` javaIntent i = new Intent(mContext, FileBrowserWithCustomHandler.class);
Bundle ib = new Bundle();
//add extras
i.putExtras(ib);
startActivity(i);```
and in the broadcast receiver use the following to get the extras``` java
Bundle b = intent.getExtras()
```### To load a particular directory instead of the normal root directory
Add the following in the intent
``` java
Intent i = new Intent(this, FileBrowser.class); //works for all 3 main classes (i.e FileBrowser, FileChooser, FileBrowserWithCustomHandler)
i.putExtra(Constants.INITIAL_DIRECTORY, new File(Environment.getExternalStorageDirectory().getAbsolutePath(),"Movies").getAbsolutePath());
```### To list only the files with a particular extension
Add the following in the intent
``` java
Intent i = new Intent(this, FileBrowser.class); //works for all 3 main classes (i.e FileBrowser, FileChooser, FileBrowserWithCustomHandler)
i.putExtra(Constants.ALLOWED_FILE_EXTENSIONS, "mkv;mp4;avi");
```Use file extensions delimited by semicolon
### Known Issues
Currently folder size is calculated using Java's Api getTotalSpace() which gives the size of the partition of the path which may not always give the desired result.
To get the exact size, properties can be used which gives the exact result. If Exact size is to be known, then UI would lag as it would take some time to calculate size - Fix for this is postponedIf you have any questions/queries/Bugs/Hugs please mail @
[email protected]