我正在尝试以这种方式获取文件:
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);
}
Run Code Online (Sandbox Code Playgroud)
然后在onActivityResult
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)
根据许多线程,我应该从意图中获取文件名 with data.getData().getPath()
,我期望的文件名是my_file.pdf,但我得到的是:
/document/acc=1;doc=28
那么该怎么办?谢谢你的帮助。
我正在尝试获取文件
不是用那个代码。该代码要求用户选择一段内容。这可能是也可能不是文件。
根据许多线程,我应该使用 data.getData().getPath() 从意图中获取文件名
这从来都不是正确的,尽管它往往适用于旧版本的 Android。
那么该怎么办?
嗯,这取决于。
如果您只想接受文件,请集成文件选择器库而不是使用(更新 2019-04-06:由于 Android Q 禁止大多数文件系统访问,此解决方案不再实用)ACTION_GET_CONTENT
.
如果您愿意允许用户使用 选择一段内容ACTION_GET_CONTENT
,请理解它不必是文件,也不必具有类似于文件名的内容。您将获得的最接近的:
如果getScheme()
在的Uri
回报file
,你原来的算法将工作
如果getScheme()
在的Uri
回报content
,使用DocumentFile.fromSingleUri()
创建DocumentFile
,然后调用getName()
上DocumentFile
-这应该返回一个“显示名称”,这应该是识别用户
归档时间: |
|
查看次数: |
3247 次 |
最近记录: |