为什么不匹配路径?

Why don't match the path?

我有问题,我尝试将文件保存到自定义目录,但不起作用。

首先我选择了下载目录,但是复制不起作用。

如果我添加一个 constans 目录文件夹,下载、复制工作正常。

问题是,这两个目录路径不存在。

如果我添加一个常量路径,例如:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 路径是:/storage/emulated/0/Download

但是如果我从 intent 添加自定义路径,并选择下载目录,则路径为:com.android.providers.downloads.documents/tree/downloads

我复制文件的函数:

database.close();
        File sourceDb = context.getDatabasePath("app_database");
        File destinationDb = new File(filePath + "/app_database");
        File file=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        try {
            FileUtils.copyFile(sourceDb, destinationDb);
        } catch (Exception e) {
            return "Error";
        }

我的意图:

Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
                i.addCategory(Intent.CATEGORY_DEFAULT);
                startActivityForResult(Intent.createChooser(i, "Choose directory"), 100);


public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode==100){
            informationSnackbar(data.getData().toString());
...
}

ACTION_OPEN_DOCUMENT 不 return 一个 File。它 return 是一个 Uri 指向一个 DocumentsProvider.

要写入由 Uri 标识的文档,请使用 ContentResolveropenOutputStream() 获取可以将数据库复制到的 OutputStream