Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 内容URI和本地化_Java_Android - Fatal编程技术网

Java 内容URI和本地化

Java 内容URI和本地化,java,android,Java,Android,我正在编写一个应用程序,其中有一个功能,用户可以选择一个文件夹来保存图像。用户选择此选项一次,以后图像将保存在后台,无需用户干预 我正在使用ACTION\u OPEN\u DOCUMENT\u树让用户选择一个文件夹 (或其他内容提供商): 这一切都很好,我从活动结果中正确地获得了一个Uri: @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCo

我正在编写一个应用程序,其中有一个功能,用户可以选择一个文件夹来保存图像。用户选择此选项一次,以后图像将保存在后台,无需用户干预

我正在使用
ACTION\u OPEN\u DOCUMENT\u树
让用户选择一个文件夹 (或其他内容提供商):

这一切都很好,我从活动结果中正确地获得了一个Uri:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == DirectoryPickerRequest) {
            Uri treeUri = data.getData();
            mDirectory.setText(treeUri.toString());
        }
    }
}
我的问题是Uri返回如下内容:
content://com.android.externalstorage.documents/tree/primary%3AOutput%2FDirectory

这很好,但是如何以任何本地化的方式向用户显示?我希望用户能够在点击Save之前确认位置。例如,如果它是一个文件,我想在本例中向他们显示/Output/Directory/They/Selected“。我的理解是,它不一定是一个文件,所以我不能假装它是一个文件,然后使用文件API来获取路径

是否有一种通用和本地化的方法来实现这一点

谢谢

但是我如何以任何本地化的方式向用户显示它呢

使用
fromtreeeuri()
将其包装在
DocumentFile
中,然后在
DocumentFile
上调用
getName()
。这将得到一个“显示名称”。它应该是用户能够识别的东西

例如,如果是一个文件,我想在本例中向他们显示“The/Output/Directory/They/Selected”

这是不可能的。文件系统上不需要以任何形式或方式存在此文档树。例如,他们可能正在Google Drive中创建一棵树

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == DirectoryPickerRequest) {
            Uri treeUri = data.getData();
            mDirectory.setText(treeUri.toString());
        }
    }
}