Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在onActivityResult()之后从dropbox或驱动程序获取文件扩展名_Android_Onactivityresult - Fatal编程技术网

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发布类似的东西。。。无论如何,谢谢你。。