内容URI和本地化

时间:2017-06-27 20:52:58

标签: java android

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

我正在使用ACTION_OPEN_DOCUMENT_TREE意图让用户允许用户选择文件夹 (或其他内容提供商):

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, DirectoryPickerRequest);

这一切都很好,我从活动结果中得到了一个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

这很好,但是如何以任何局部方式向用户显示?我希望用户能够在点击保存之前确认位置。例如,如果它是一个文件,我想在这种情况下向他们展示"The/Output/Directory/They/Selected"。我的理解是它不一定是文件所以我不能只是假装它是一个文件并使用文件API来获取路径。

是否有通用的本地化方法来执行此操作?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

但是如何以任何形式的本地化方式向用户显示?

使用DocumentFilefromTreeUri()中换行,然后在getName()上拨打DocumentFile。这将得到一个“显示名称”。它应该是用户可以识别的东西。

  

例如,如果是一个文件,我想在这种情况下向他们展示“/输出/目录/他/选择”

这是不可能的。不要求文档系统以任何形式或方式存在此文档树。例如,他们可能会在Google云端硬盘中创建一个树。