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

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

概述我正在尝试以这种方式获取文件:finalIntentchooseFileIntent=newIntent(Intent.ACTION_GET_CONTENT);String[]mimetypes={"application/pdf"};chooseFileIntent.setType("*/*");chooseFileIntent.addCategory(Intent.CATEGORY_OPENABLE);

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

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中:

@OverrIDeprotected voID onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);}

根据许多线程,我应该使用data.getData().getPath()从意图中获取文件名,我期望的文件名是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选择一段内容,请理解它不必是文件,也不必具有类似于文件名的内容.您将获得的最接近的信息:

>如果Uri的getScheme()返回文件,则原始算法将起作用
>如果Uri的getScheme()返回内容,请使用documentfile.fromSingleUri()创建一个documentfile,然后在该documentfile上调用getname()-这应该返回一个“显示名称”,用户应该可以识别

总结

以上是内存溢出为你收集整理的android-onActivityResult的intent.getPath()没有给我正确的文件名全部内容,希望文章能够帮你解决android-onActivityResult的intent.getPath()没有给我正确的文件名所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1081025.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存