Android Java读取文件云

Android Java读取文件云,java,android,dropbox,file-handling,Java,Android,Dropbox,File Handling,我的应用程序需要读取用户选择的文件。我通过以下内容找到该文件: Intent getHandsIntent = new Intent(Intent.ACTION_GET_CONTENT); getHandsIntent.setType("file/*"); startActivityForResult(getHandsIntent, GLOBALS.rqFindFile); // then, in onActivityResult... i

我的应用程序需要读取用户选择的文件。我通过以下内容找到该文件:

       Intent getHandsIntent = new Intent(Intent.ACTION_GET_CONTENT);
       getHandsIntent.setType("file/*");
       startActivityForResult(getHandsIntent, GLOBALS.rqFindFile);

// then, in onActivityResult...
      if (RequestCode == GLOBALS.rqFindFile) {
            if (ResultCode == RESULT_OK) {
                String path = data.getData().getPath();
                readHandsFile(path);
            }


这适用于本地文件。但是,如果用户选择DropBox来定位文件,则在控件返回到onActivityResult代码之前,我会收到一条消息,说明文件正在下载

我从数据中获得的路径是/filecache/635e8383-3a6e-424d-8437-d4d83421fcb8形式的,但当我试图打开此文件进行读取时,出现异常: /filecache/635e8383-3a6e-424d-8437-d4d83421fcb8:打开失败:eOpen(无此类文件或目录)


有什么想法吗?

“这对本地文件很好”——其实没有,因为
file/
不是有效的MIME类型前缀。您只是希望用户能够识别它或提供
*/*
支持。除此之外,
Uri
不是文件,
getPath()
是无用的。我不确定要查找的文件是否具有标准MIME类型。我希望打开的数据源可以是用于表示纸牌游戏bridge中使用的手的多个不同标准之一。最重要的两种格式是.dlm(一种基于文本的格式)和.dup(一种二进制格式)。因此,我不知道传递给setType的参数是什么,以允许用户定位任何一种类型的文件。请使用标准的“我愿意接受任何东西”通配符MIME类型
*/*