在 onActivityResult() 之后从保管箱或驱动程序获取文件扩展名
Getting a file extension from dropbox or driver after onActivityResult()
我使用此代码上传文件:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
final String path = getPath(data.getData());
final String fileExt = path.substring(path.lastIndexOf(".") + 1);
}
}
此代码适用于 SDCard
中的 select 文件。但是,如果我在第 4 行从 Drive
或 Dropbox
select 文件,我会收到错误消息。
谁都知道为什么会这样。
This code work fine for select file from SDCard.
不一定。毕竟,文件不必有扩展名。 README
是一个有效的文件名,它没有文件扩展名。
But if I select file from Drive or Dropbox on line 4 I get error
当然可以。 Uri
不需要文件扩展名。例如, 是一个 Uri
,它没有文件扩展名。
如果data.getData().getScheme()
returns file
,欢迎您尝试您的算法,但是README
.
会失败
如果 data.getData().getScheme()
returns content
,您可以使用 getContentResolver().getType(data.getData())
获取内容的 MIME 类型。然后您可以尝试使用 MimeTypeMap
来识别文件扩展名,尽管 MimeTypeMap
不会处理所有可能的 MIME 类型。
总的来说,您需要修改您的计划,这样您就不需要文件扩展名了。
我使用此代码上传文件:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
final String path = getPath(data.getData());
final String fileExt = path.substring(path.lastIndexOf(".") + 1);
}
}
此代码适用于 SDCard
中的 select 文件。但是,如果我在第 4 行从 Drive
或 Dropbox
select 文件,我会收到错误消息。
谁都知道为什么会这样。
This code work fine for select file from SDCard.
不一定。毕竟,文件不必有扩展名。 README
是一个有效的文件名,它没有文件扩展名。
But if I select file from Drive or Dropbox on line 4 I get error
当然可以。 Uri
不需要文件扩展名。例如,Uri
,它没有文件扩展名。
如果data.getData().getScheme()
returns file
,欢迎您尝试您的算法,但是README
.
如果 data.getData().getScheme()
returns content
,您可以使用 getContentResolver().getType(data.getData())
获取内容的 MIME 类型。然后您可以尝试使用 MimeTypeMap
来识别文件扩展名,尽管 MimeTypeMap
不会处理所有可能的 MIME 类型。
总的来说,您需要修改您的计划,这样您就不需要文件扩展名了。