Android 在onActivityResult()之后从dropbox或驱动程序获取文件扩展名
我使用此代码上载文件:Android 在onActivityResult()之后从dropbox或驱动程序获取文件扩展名,android,onactivityresult,Android,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(".") +
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);
}
}
此代码适用于从SD卡选择文件。但若我从第4行的驱动器或Dropbox中选择文件,我会得到错误
谁都知道为什么会这样
此代码适用于从SD卡选择文件
不一定。毕竟,文件不必有扩展名。自述文件是有效的文件名,并且没有文件扩展名
但若我从第4行的驱动器或Dropbox中选择文件,我会得到错误
当然。Uri不需要有文件扩展名。例如https://stackoverflow.com/questions/53131985/android-get-extension-file-from-dropbox-or-driver-after-onactivityresult 是一个Uri,它没有文件扩展名
若data.getData.getScheme返回文件,则欢迎您尝试您的算法,但对于自述文件,它将失败
如果data.getData.getScheme返回内容,则可以使用getContentResolver.getTypedata.getData获取内容的MIME类型。然后,您可以尝试使用MimeTypeMap来标识文件扩展名,尽管MimeTypeMap不能处理所有可能的MIME类型
总的来说,你需要修改你的计划,这样你就不需要文件扩展名了。我有一个与OP无关的疑问。但是,现在,谷歌将在现在和将来开发androidx软件包,有没有办法在我们的项目中默认获得android软件包?我的意思是,不必单击重构就可以访问Androidx thingy?@mañgßürmån:如果您有不相关的问题,请单击提问按钮,然后问一个单独的堆栈溢出问题。最有可能的是,Android Studio的未来版本将设置其新的项目模板来使用AndroidX工件-我不知道什么时候。哦,是的,我忘了问一个新问题。。无论如何,谢谢你的回复,我其实是按照你的答案和帖子来学习的。我在等待Android发布类似的东西。。。无论如何,谢谢你。。