Android 如何从外部sd使用URI创建文件?

Android 如何从外部sd使用URI创建文件?,android,uri,Android,Uri,基本上,我的问题有点类似于,我使用了给出的解决方案。问题是,只有当文件来自内部存储时,它才会工作,这就是问题的原因: 在这部分代码中(在我提到的问题的解决方案中): 没有以下else语句。我已经搜索了访问该非主要卷的方法,但找不到任何答案。该问题和答案中提供的代码非常糟糕。Uri不需要指向文件,更不用说可以访问的文件,更不用说可以从Uri本身派生路径的文件了。带有内容方案的Uri是一个不透明的句柄,仅此而已 使用ContentResolver和openInputStream()(或openOut

基本上,我的问题有点类似于,我使用了给出的解决方案。问题是,只有当文件来自内部存储时,它才会工作,这就是问题的原因:

在这部分代码中(在我提到的问题的解决方案中):


没有以下else语句。我已经搜索了访问该非主要卷的方法,但找不到任何答案。

该问题和答案中提供的代码非常糟糕。
Uri
不需要指向文件,更不用说可以访问的文件,更不用说可以从
Uri
本身派生路径的文件了。带有
内容
方案的
Uri
是一个不透明的句柄,仅此而已


使用
ContentResolver
openInputStream()
(或
openOutputStream()
)获取由
Uri

标识的内容流是的,我想我已经在某个地方读到了您对此的评论。但是我会尝试你提到的openInputStream,然后我会给出一个更新。
        if (isExternalStorageDocument(uri)) {
            final String docId = DocumentsContract.getDocumentId(uri);
            final String[] split = docId.split(":");
            final String type = split[0];

            if ("primary".equalsIgnoreCase(type)) {
                return Environment.getExternalStorageDirectory() + "/" + split[1];
            }
            // TODO handle non-primary volumes
        }