gpt4 book ai didi

android - onActivityResult 的intent.getPath() 没有给我正确的文件名

转载 作者:行者123 更新时间:2023-12-02 01:08:38 24 4
gpt4 key购买 nike

我正在尝试以这种方式获取文件:

final Intent chooseFileIntent = new Intent(Intent.ACTION_GET_CONTENT);
String[] mimetypes = {"application/pdf"};
chooseFileIntent.setType("*/*");
chooseFileIntent.addCategory(Intent.CATEGORY_OPENABLE);
if (chooseFileIntent.resolveActivity(activity
.getApplicationContext().getPackageManager()) != null) {
chooseFileIntent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
activity.startActivityForResult(chooseFileIntent, Uploader.PDF);
}

然后在onActivityResult中:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}

根据许多线程,我应该使用data.getData().getPath()从 Intent 中获取文件名,我期望的文件名是my_file。 pdf,但我得到的是这个:

/document/acc=1;doc=28

那该怎么办呢?感谢您的帮助。

最佳答案

I am trying to fetch a file

不使用该代码。该代码要求用户选择一段内容。这可能是也可能不是文件。

According to many threads I'm supposed to fetch the file name from the intent with data.getData().getPath()

这从来都是不正确的,尽管它往往适用于旧版本的 Android。

So what to do?

嗯,这要看情况。

如果您只想接受文件,请集成 a file chooser library而不是使用 ACTION_GET_CONTENT(更新 2019-04-06:由于 Android Q 禁止大多数文件系统访问,因此此解决方案不再实用)

如果您愿意允许用户使用 ACTION_GET_CONTENT 选择一段内容,请理解它不必是文件,也不必具有类似于文件名的内容。您将得到的最接近的值:

  • 如果 UrigetScheme() 返回 file,则您的原始算法将起作用

  • 如果 UrigetScheme() 返回 content,请使用 DocumentFile.fromSingleUri()创建一个 DocumentFile,然后在该 DocumentFile 上调用 getName() — 这应该返回一个用户可以识别的“显示名称”

关于android - onActivityResult 的intent.getPath() 没有给我正确的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57709661/

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