繁体   English   中英

Android,Java,使用存储访问框架 (SAF) 以编程方式在 SD 卡上创建目录

[英]Android, Java, Create directory on SD card programmatically using Storage Access Framework (SAF)

我的问题是我无法在插入 Android 便携式设备的 SD 卡上创建目录。 下面是我要开始工作的 Java 代码:我正在尝试在/storage/BF4F-1107/下创建目录sable

public class AnActivity extends AppCompatActivity
{
private static final int N_CREATE_DIRECTORY = 1;

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // SD card
        String s_sdCardStorage = "/storage/BF4F-1107/";

        Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("file/*");
        intent.putExtra(Intent.EXTRA_TITLE, s_destFilePath);
        startActivityForResult(intent, N_CREATE_DIRECTORY);
        // HERE
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if(requestCode == N_CREATE_DIRECTORY)
        {
            if(data != null)
            {
                Uri uri = data.getData();
                DocumentFile docFileSDCardStorage = DocumentFile.fromSingleUri(this, uri);

                try
                {
                    DocumentFile docFileDir = docFileSDCardStorage.createDirectory("sable");
                }
                catch(UnsupportedOperationException exn)
                {
                    System.out.println(exn.getMessage());
                }
            }
        }
    }
}

会发生什么:

  • onCreate()中的代码被执行。
  • 然后程序在// HERE处阻塞。
  • 在便携式设备上,出现一个显示/storage/BF4F-1107/的“对话框”和一个我“按下”的按钮Save
  • 一旦“按下”, onActivityResult()中的代码就会被执行。

但结果是/storage/BF4F-1107/下的目录sable没有创建。 并且执行路径通过 catch 子句,引发异常UnsupportedOperationException并在 System.out.println( exn.getMessage System.out.println(exn.getMessage()); .

编辑 2:在/storage/BF4F-1107/下创建一个空文件_storage_BF4F-1107_

你能帮我让这段代码工作吗?

此外,我希望静默创建目录sable 我不希望用户必须触摸“保存”。

I am trying to use the Storage Access Framework ( https://developer.android.com/training/data-storage/shared/documents-files ) because the mkdirs method of the java.io.File class doesn't work (I当我尝试在 SD 卡上创建目录时获得权限被拒绝异常)。

编辑:我的 Android 版本是 6.0.1

谢谢你。

使用 ACTION_OPEN_DOCUMENT_TREE 让用户选择 de SD 卡。

之后,您可以在所选目录中创建尽可能多的文件和目录。

如果您只想使用 SAF 创建一个文件,请使用用户选择位置和文件名的 ACTION_CREATE_DOCUMENT。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM