【问题标题】:How to create new folder in sd card by using Storage Access Framework?如何使用存储访问框架在 sd 卡中创建新文件夹?
【发布时间】:2016-08-01 11:48:18
【问题描述】:

我想知道如何使用“存储访问框架”在 SD 卡上创建新文件夹。如果你把代码给我,那就太好了。 我已经搜索了其他问题和答案,但没有找到方法。

根据“CommonsWare”答案添加一些已经有效的代码。 请注意,这是我发现它可以在带有 Android OS 5.1.1 的手机 SS A5 上的 sd 卡中创建新文件夹的唯一方法

    public void newFolder(View view)
    {
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
        startActivityForResult(intent, NEW_FOLDER_REQUEST_CODE);
    }

    private static final int NEW_FOLDER_REQUEST_CODE = 43;

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent resultData) {
        super.onActivityResult(requestCode, resultCode, resultData);

        Uri currentUri = null;

        if (resultCode == Activity.RESULT_OK)
        {
            if (requestCode == NEW_FOLDER_REQUEST_CODE)
            {
                if (resultData != null) {
                    currentUri = resultData.getData();
                    DocumentFile pickedDir = DocumentFile.fromTreeUri(this, currentUri);
                    DocumentFile newDir = pickedDir.createDirectory("MyFolder");
                    textView.setText(newDir.getName());
                }
            }
        }
    }

【问题讨论】:

    标签: android directory storage


    【解决方案1】:

    您不能创建“在 SD 卡上创建新文件夹”。您可以在用户选择的其他文件夹中创建一个新文件夹,但您不能强制用户选择可移动存储。

    要在其他文件夹中创建一个新文件夹,这应该可以:

    1. an ACTION_OPEN_DOCUMENT_TREE Intent 上使用startActivityForResult() 启动一个活动,以允许用户选择一个文件夹。 包含FLAG_DIR_SUPPORTS_CREATE 以确保您可以在文件夹中创建新内容。

    2. onActivityResult() 中,将您获得的Uri 包装在DocumentFile 中,然后将call createDirectory() 包装在其上,以创建一个新文件夹作为用户选择的子文件夹。

    【讨论】:

    • CommonsWare:一个例子将不胜感激。
    • @user6159419:问题似乎包含一个。
    • 我不确定标志...FLAG_DIR_SUPPORTS_CREATE。你能指导在哪里以及如何声明它吗?
    • @user6159419:这似乎是我的一个错误。这似乎不是Intent 标志。我更新了答案以删除该特定部分。我为我的错误道歉!
    • 您可以通过调用 DocumentTree.fromTreeUri 将 uri 和上下文作为参数传递给 DocumentFile.fromTreeUri(context, uri) 来“包装在 DocumentFile 中获得的 Uri”
    猜你喜欢
    • 2016-07-01
    • 2012-09-20
    • 1970-01-01
    • 2020-11-25
    • 2016-10-12
    • 2016-08-20
    • 2018-05-18
    • 2016-04-18
    • 1970-01-01
    相关资源
    最近更新 更多