您当前的位置: 首页 >  android

android-filepicker

发布时间:2016-11-09 11:02:04 ,浏览量:0

android-filepicker
项目地址: Angads25/android-filepicker
简介:Selecting directories/files made easier.
Android Library to select files/directories from Device Storage.
Developed by

Angad Singh (@angads25)

Benchmark:

Where to Find:

Download Maven Central

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.0.6   '
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.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.

    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 further requests for the permission on runtime. You should overrideonRequestPermissionsResult 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 go further.
FilePickerPreference
  1. Start by declaring FilePickerPreference in your settings xml file as:

    
    				
  2. Implement Preference.OnPreferenceChangeListener to class requiring selected values and OverrideonPreferenceChange(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 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.Device.Default

Screenshot 5

Performance GPU Overdraw

Performance 1

GPU Rendering

Performance 2

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    111043博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0507s