A library designed to package a powerful file selector for android
Unicorn File Picker
A simple, documented, and contribution-friendly File Picker for Android.
Unicorn File Picker is a library designed to package a powerful file selector for android. You can:
- Start the file picker activity from any activity or fragment
- Select single or multiple files
- Use as a Directory Picker
- Filter out files you want to display
- Add custom theme or use default theme options (Light & Dracula)
- And much more which you have to try out for yourself
Unicorn Dracula | Unicorn Default | Custom Theme |
---|---|---|
Download
Gradle:
repositories {
maven { url ‘https://jitpack.io’ }
}
dependencies {
implementation 'com.github.abhishekti7:UnicornFilePicker:$latest_version'
}
How do I use Unicorn File Picker?
Permission
The library requires two permissions:
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
If you are targeting Android 6.0+, you need to handle runtime permission request before next step.
Also, don't forget to add requestlegacyexternalstorage=true
for Android 10.
Simple usage snippet
Start UnicornFilePicker
from current Activity
or Fragment
:
UnicornFilePicker.from(MainActivity.this)
.addConfigBuilder()
.selectMultipleFiles(false)
.showOnlyDirectory(true)
.setRootDirectory(Environment.getExternalStorageDirectory().getAbsolutePath())
.showHiddenFiles(false)
.setFilters(new String[]{"pdf", "png", "jpg", "jpeg"})
.addItemDivider(true)
.theme(R.style.UnicornFilePicker_Dracula)
.build()
.forResult(Constants.REQ_UNICORN_FILE);
Themes
There are two built-in themes you can use to start UnicornFilePicker
:
R.style.UnicornFilePicker_Default
(light mode)R.style.UnicornFilePicker_Dracula
(dark mode)
You can also define your own custom theme.
Receive Result
In onActivityResult()
callback of the starting Activity
or Fragment
:
List<String> mSelected_files;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_CHOOSE && resultCode == RESULT_OK) {
ArrayList<String> files = data.getStringArrayListExtra("filePaths");
for(String file : files){
Log.e(TAG, file);
}
}
}