• This repository has been archived on 13/May/2020
  • Stars
    star
    644
  • Rank 69,893 (Top 2 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Selecting directories/files made a lot easier.

The project is no longer being maintained.

FilePicker

Super Lite Android Library to select files/directories from Device Storage.

Developed by

Angad Singh (@angads25)

Benchmark:

API

Where to Find:

Download Maven Central Android Arsenal

Read all about internal classes and functions in the wiki.

Features

  • Easy to Implement.
  • No permissions required.
  • Files, Directory Selection.
  • Single or Multiple File selection.

Installation

  • Library is also Available in MavenCentral, So just put this in your app dependencies to use it:
    compile 'com.github.angads25:filepicker:1.1.1'

Usage

FilePickerDialog

  1. Start by creating an instance of DialogProperties.

        DialogProperties properties = new DialogProperties();

    Now 'DialogProperties' has certain parameters.

  2. Assign values to each Dialog Property using DialogConfig class.

        properties.selection_mode = DialogConfigs.SINGLE_MODE;
        properties.selection_type = DialogConfigs.FILE_SELECT;
        properties.root = new File(DialogConfigs.DEFAULT_DIR);
        properties.error_dir = new File(DialogConfigs.DEFAULT_DIR);
        properties.offset = new File(DialogConfigs.DEFAULT_DIR);
        properties.extensions = null;
  3. Next create an instance of FilePickerDialog, and pass Context and DialogProperties references as parameters. Optional: You can change the title of dialog. Default is current directory name. Set the positive button string. Default is Select. Set the negative button string. Defalut is Cancel.

        FilePickerDialog dialog = new FilePickerDialog(MainActivity.this,properties);
        dialog.setTitle("Select a File");
  4. Next, Attach DialogSelectionListener to FilePickerDialog as below,

        dialog.setDialogSelectionListener(new DialogSelectionListener() {
            @Override
            public void onSelectedFilePaths(String[] files) {
                //files is the array of the paths of files selected by the Application User.
            }
        });

    An array of paths is returned whenever user press the select button`.

  5. Use dialog.show() method to show dialog.

NOTE:

Marshmallow and above requests for the permission on runtime. You should override onRequestPermissionsResult in Activity/AppCompatActivity class and show the dialog only if permissions have been granted.

        //Add this method to show Dialog when the required permission has been granted to the app.
        @Override
        public void onRequestPermissionsResult(int requestCode,@NonNull String permissions[],@NonNull int[] grantResults) {
            switch (requestCode) {
                case FilePickerDialog.EXTERNAL_READ_PERMISSION_GRANT: {
                    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                        if(dialog!=null)
                        {   //Show dialog if the read permission has been granted.
                            dialog.show();
                        }
                    }
                    else {
                        //Permission has not been granted. Notify the user.
                        Toast.makeText(MainActivity.this,"Permission is Required for getting list of files",Toast.LENGTH_SHORT).show();
                    }
                }
            }
        }
That's It. You are good to proceed further.

FilePickerPreference

  1. Start by declaring FilePickerPreference in your settings xml file as:

       <com.github.angads25.filepicker.view.FilePickerPreference
           xmlns:app="http://schemas.android.com/apk/res-auto"
           android:key="your_preference_key"
           android:title="Pick a Directory"
           android:summary="Just a Summary"
           android:defaultValue="/sdcard:/mnt"
           app:titleText="Select Directories"
           app:error_dir="/mnt"
           app:root_dir="/sdcard"
           app:selection_mode="multi_mode"
           app:selection_type="dir_select"
           app:extensions="txt:pdf:"/>
  2. Implement Preference.OnPreferenceChangeListener to class requiring selected values and Override onPreferenceChange(Preference, Object) method. Check for preference key using Preference reference.

        @Override
        public boolean onPreferenceChange(Preference preference, Object o)
        {   if(preference.getKey().equals("your_preference_key"))
            {   ...
            }
            return false;
        }
  3. Typecast Object o into String Object and use split(String) function in String class to get array of selected files.

        @Override
        public boolean onPreferenceChange(Preference preference, Object o)
        {   if(preference.getKey().equals("your_preference_key"))
            {   String value=(String)o;
                String arr[]=value.split(":");
                ...
                ...
            }
            return false;
        }

    That's It. You are good to move further.

Important:

  • defaultValue, error_dir, root_dir, offset_dir must have valid directory/file paths.
  • defaultValue paths should end with ':'.
  • defaultValue can have multiple paths, there should be a ':' between two paths.
  • extensions must not have '.'.
  • extensions should end with ':' , also have ':' between two extensions. eg. /sdcard:/mnt:

Note:

FilePickerPreference stores selected directories/files as a String. It delimits multiple files/directories using ':' char.

Read more on implementation here.

Screenshot

Theme.Black

Screenshot 1

Theme.Holo

Screenshot 2

Theme.Holo.Light

Screenshot 3

Theme.Material

Screenshot 4

Theme.DeviceDefault

Screenshot 5

Performance

GPU Overdraw

Performance 1

GPU Rendering

Performance 2

License

Copyright (C) 2016 Angad Singh

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

android-toggle

Custom Switches for Android
Java
383
star
2

Fookart

A multi tenant e-commerce web application
Java
6
star
3

Todo-List-Application

Kotlin
4
star
4

KYO

Udacity Android Developer Nanodegree Capstone Project
Java
3
star
5

KMM-Sample-App

Kotlin Multiplatform sample app of Images gallery for Android and iOS. Includes: Ktor client and features, kotlinxserializer, coroutines, kodein, unit tests
Kotlin
3
star
6

Visionary

Java
2
star
7

Derpina

A literally dumb assistant that manages my room
Java
2
star
8

RecyclerView

Android Application - RecyclerView with custom view using sample data
Java
2
star
9

android-daterangepicker

Material Design Date Range Picker for Android
Java
2
star
10

StockHawk

StockHawk
Java
2
star
11

PopularMovies2

Popular Movies Stage 2.
Java
2
star
12

Android_InterfaceListener_SharedPref_NavDrawer_Frag_RecyclerView

Java
2
star
13

JetDroid

Collect articles and fly towards exit location in short time.
C#
1
star
14

PopularMovies1

Popular Movies Stage 1.
Java
1
star
15

AndroidPlayground

Kotlin
1
star
16

ApkWizard

Kotlin
1
star
17

Braillo

A chat application for blind people.
Java
1
star
18

BuildItBigger

Build It Bigger
Java
1
star
19

Go-Ubiquitous

Java
1
star
20

Gates16

Java
1
star
21

CustomViewDemo

Java
1
star
22

Stargazer

A Custom View to Rate things.
Java
1
star
23

Localhost

Local Navigation using in house Wifi
Java
1
star
24

android-debugger

Java
1
star
25

MyAppPortfolio

Udacity Nanodegree Project 0.
Java
1
star
26

Nature

A test repository for custom views and viewgroups in android containing natural elements.
Java
1
star
27

MakeYourAppMaterial

Make Your App Material
Java
1
star
28

JavaPlayground

Example Java Programs
Java
1
star
29

File-Ware

A cross platform file sharing Desktop Application
Java
1
star
30

DataStructures

Implementing Data Structures in JAVA
Java
1
star
31

SingleActivityApplication

A Dummy Single Activity Android Application
1
star
32

Learn2Code

Archive for Beginner Programmers. Contains basic programmes of selected Languages.
Java
1
star
33

Text-Analyzer

Finding frequency of N letter words from multiple texts.
Java
1
star
34

RxAndroid-Retrofit-Demo

Just an App!
Java
1
star
35

RoomRetroRxDagger

Dagger, RxJava, Room, Retrofit and MVP
Kotlin
1
star
36

Capstone-Project

Udacity Android Developer Nanodegree Project
1
star