【问题标题】:Why don't match the path?为什么不匹配路径?
【发布时间】:2019-04-16 09:54:16
【问题描述】:

Hy

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

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

如果我添加一个常量目录文件夹,则下载,副本正在工作。

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

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

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

但如果我从意图添加自定义路径,并选择下载目录,则路径为: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());
...
}

【问题讨论】:

    标签: android file android-intent filepath java-io


    【解决方案1】:

    ACTION_OPEN_DOCUMENT 不返回 File。它返回一个指向DocumentsProviderUri

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

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 2018-09-11
      相关资源
      最近更新 更多