Simple Android Directory picker - How?

前端 未结 5 1813
执念已碎
执念已碎 2021-02-05 07:03

I have just started coding in Android Studio and feeling Awesome..!!

How can I write a code for a \'Directory Picker\'. i.e., When a button is clicked, a simple Dialog/

相关标签:
5条回答
  • 2021-02-05 07:34

    As of Android 10 (API 29), direct access to external storage is deprecated in favor of storage access framework https://developer.android.com/guide/topics/providers/document-provider

    0 讨论(0)
  • 2021-02-05 07:46

    Use below code to select directory

            Intent result = new Intent();
            result.putExtra("chosenDir", path);
            setResult(RESULT_OK, result);
    

    And to get the selected path override onActivityResult :

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == PICK_DIRECTORY && resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            String path = (String) extras.get("chosenDir");
    
        }
    }
    
    0 讨论(0)
  • 2021-02-05 07:49

    Also you can use some libraries.
    for example:
    https://github.com/passy/Android-DirectoryChooser

    0 讨论(0)
  • 2021-02-05 07:56

    Try to use Intent.ACTION_OPEN_DOCUMENT_TREE

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){ 
        Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); 
        i.addCategory(Intent.CATEGORY_DEFAULT);
        startActivityForResult(Intent.createChooser(i, "Choose directory"), 9999);
    }
    

    And get the result Uri from onActivityResult data.getData()

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        switch(requestCode) {
            case 9999:
                Log.i("Test", "Result URI " + data.getData());
                break;
        }
    }
    
    0 讨论(0)
  • 2021-02-05 07:57

    There's an open source library that does directory chooser and open/save file activities as well. It can be found on GitHub at https://github.com/BoardiesITSolutions/FileDirectoryPicker.

    Works on Android API Level 17 and above

    Disclaimer: I wrote it

    0 讨论(0)
提交回复
热议问题