
我正在尝试以这种方式获取文件:
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()没有给我正确的文件名所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)