【问题标题】:Simple Android Directory picker - How?简单的 Android 目录选择器 - 如何?
【发布时间】:2015-03-10 00:34:15
【问题描述】:

我刚开始在 Android Studio 中编码,感觉很棒..!!

如何为“目录选择器”编写代码。即,当单击按钮时,一个简单的对话框/活动屏幕可以显示目录列表。

另外,想要将该目录中的所有文件存储到一个数组变量中。 (单击确定按钮后)。

PS:我在这里搜索并找到了一些很酷的“文件选择”,但我正在寻找目录选择器..!

提前致谢。

【问题讨论】:

    标签: android directory picker filechooser


    【解决方案1】:

    使用以下代码选择目录

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

    并获取所选路径覆盖 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");
    
        }
    }
    

    【讨论】:

      【解决方案2】:

      您还可以使用一些库。
      例如:
      https://github.com/passy/Android-DirectoryChooser

      【讨论】:

        【解决方案3】:

        尝试使用 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);
        }
        

        并从onActivityResult data.getData()中获取结果Uri

        @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;
            }
        }
        

        【讨论】:

        • 这适用于 API 21+
        • 您可以使用这个答案来获取实际的目录路径:stackoverflow.com/a/29789495/5571772
        • @Milton 我的最低 SDK 是 API 19。有没有类似的方法可以实现相同的功能?
        • @AurumTechie 您是否为 API 19 工作过?如果是,建议在 API 19 中解决此问题。
        【解决方案4】:

        还有一个开源库,它还可以进行目录选择器和打开/保存文件活动。它可以在 GitHub 上找到,地址为 https://github.com/BoardiesITSolutions/FileDirectoryPicker

        适用于 Android API 级别 17 及更高版本

        免责声明:我写的

        【讨论】:

          【解决方案5】:

          从 Android 10 (API 29) 开始,直接访问外部存储已被弃用,取而代之的是存储访问框架 https://developer.android.com/guide/topics/providers/document-provider

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-05-02
            • 2013-04-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-11
            • 1970-01-01
            相关资源
            最近更新 更多