Android Library to select files/directories from Device Storage.
- Easy to Implement.
- No permissions required.
- Files, Directory Selection.
- Single or Multiple File selection.
- Library is also Available in MavenCentral, So just put this in your app dependencies:
compile 'com.github.angads25:filepicker:1.0.2'
-
Start by creating an instance of
DialogProperties
.DialogProperties properties=new DialogProperties();
Now 'DialogProperties' has certain parameters.
Parameter | Type | Function |
---|---|---|
selection_mode |
int | Selection Mode defines whether a single of multiple Files/Directories have to be selected. |
selection_type |
int | Selection Type defines whether a File/Directory or both of these has to be selected. |
root |
File | The Parent/Root Directory. List of Files are populated from here. Can be set to any readable directory. |
extensions |
String[] | An Array of String containing extensions, Files with only that will be shown. Others will be ignored. |
-
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.extensions=null;
Read more about
DialogConfigs
and other options from here. -
Next create an instance of
FilePickerDialog
, and passContext
andDialogProperties
references as parameters.FilePickerDialog dialog = new FilePickerDialog(MainActivity.this,properties);
-
Next, Attach
DialogSelectionListener
toFilePickerDialog
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`. -
Use
dialog.show()
method to show dialog.That's It. You are good to go further.
Marshmallow and further requests for the permission during runtime. I would recommend to override onRequestPermissionsResult
of 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();
}
}
}
}