gpt4 book ai didi

android - 从 onActivityResult Intent 获取一个或多个文件及其文件名?

转载 作者:行者123 更新时间:2023-11-30 00:56:29 25 4
gpt4 key购买 nike

我使用此代码允许用户从他们的存储中选择多个 .csv 文件:

    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("text/comma-separated-values");
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(Intent.createChooser(intent, "Get CSV Files"), REQUEST_IMPORT_CSV);

选择文件后,它会转到 onActivityResult(),到目前为止我已经完成了:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_IMPORT_CSV:
if (data != null) {
ClipData clipData = data.getClipData();
ArrayList<Uri> csvUris = new ArrayList<>();
if (clipData != null) {
for (int i = 0; i < clipData.getItemCount(); i++) {
clipData.getItemAt(i).getText()
csvUris.add(clipData.getItemAt(i).getUri());
}
}
else {
csvUris.add(data.getData());
}

}
break;
}
}
  1. 这是从结果中获取所有相关 Uris 的正确方法吗?如果用户选择了一个文件,我会从 data.getData() 获取 Uri,如果用户选择了多个文件,那么它会直接转到 clipData()。

  2. 假设 (1) 是正确的,我如何获取用户选择的相应文件的文件名?例如“chosen_file.csv”(我不是在询问路径)。

最佳答案

Is this the right way to get all the relevant Uris from the result?

据我所知,是的。至少,它对我有用。

how do I get the filenames of the corresponding files that the user chose?

严格来说,你不需要。没有要求 Uri 指向一个文件,就像这个网页的 URL 必须指向一个文件一样。

可以做的是将Uri 包装在DocumentFile 中,via fromSingleUri() .然后,调用 DocumentFile 上的 getName() 以获得内容的“显示名称”。根据用户从何处获取内容,此可能 是类似文件名的值。它应该是用户可识别的东西。但是,不要假设它是文件名,因为它可能是其他名称。

关于android - 从 onActivityResult Intent 获取一个或多个文件及其文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com