【问题标题】:Convert an internal Uri to a File in Android?将内部 Uri 转换为 Android 中的文件?
【发布时间】:2019-10-08 01:25:00
【问题描述】:

我有一个允许用户从文件选择器中选择文件的应用程序。问题在于,当我尝试将该 Uri 转换为文件时,它会创建一些我无法使用的东西 (/document/raw:/storage/emulated/0/Download/CBTJourney-Backup/EntriesBackup1570487830108) 我想摆脱 raw: 之前的所有内容,但方法正确。无论我在哪里尝试使用InputStream 从该文件复制,它都不会复制任何内容。就像文件不存在一样。有什么想法吗?

public void chooseDatabaseFile() {
    Intent intent = new Intent();
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    // Set your required file type
    intent.setType("*/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Choose Database to Import"),GET_FILE_PATH);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == GET_FILE_PATH && data != null) {
        if(resultCode == RESULT_OK){
            Uri currFileURI = data.getData();
            if(currFileURI == null) {
                return;
            }
            else{
                String databasePath = currFileURI.getPath();
                // TODO: Determine if actual database
                importDatabase(new File(databasePath));
                // File produces "/document/raw:/storage/emulated/0/Download/CBTJourney-Backup/EntriesBackup1570487830108"
            }
        }
    }
}

【问题讨论】:

    标签: java android file uri


    【解决方案1】:

    您是否尝试过更改您的 mimetype?

    否则看看:

    Convert file: Uri to File in Android

    【讨论】:

    • 这实际上是我用来获取 lin String databasePath = currFileURI.getPath(); 的答案。问题是,当我从下载文件夹中获取某些内容时,这也会产生/document/raw:/storage/emulated/0/Download/CBTJourney-Backup/EntriesBackup1570487830108。我几乎可以肯定document/raw: 是这里的问题。但我不想只是解析它。我确信有一种我找不到的正确方法来解决它
    • 您是否尝试过使用Cursor,当我不得不支持不同的安卓版本来加载文件时,我遇到了一个类似的问题
    • 我实际上从另一个 stackoverflow 问题 (stackoverflow.com/questions/19834842/…) 中找到了答案。在发布之前,我仍在了解它。除非你想投赞成票!我昨天刚把它放在我的代码中,看看它是否可以工作并且确实有效。
    猜你喜欢
    • 2014-08-13
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2015-02-20
    • 2014-07-15
    • 2021-04-03
    • 2023-04-06
    相关资源
    最近更新 更多