在我的应用中,我需要阅读设置文件,该设置文件可以位于本地存储空间或用户的Google云端硬盘存储空间中(安装了Google云端硬盘应用)。
以下打开文件选择器,首先询问用户使用哪个文件选择器,包括使用Google Drive文件选择器的选项:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
Intent chooserIntent = Intent.createChooser(intent, "Open file");
startActivityForResult(chooserIntent, REQUEST_CODE_FILE_PICKER);
在我的onActivityResult()
函数中,如果用户选择使用文件选择器来选择本地文件,那么我已经知道如何成功获取文件路径并读取文件。但是,如果用户使用Google云端硬盘文件选择器来选择远程文件,我该如何访问用户选择的文件?
这些是onActivityResult()
函数的基本内容:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_FILE_PICKER && resultCode == RESULT_OK) {
if (LOCAL FILE) {
Uri uri = data.getData();
File myFile = new File(uri.getPath());
String filePath = myFile.getAbsolutePath();
// now read file store at 'filePath' from local storage (this part is fine)
} else if (GOOGLE DRIVE FILE) {
// what do I do here to retrieve the selected file?
}
}
super.onActivityResult(requestCode, resultCode, data);
}
使用Google云端硬盘文件选择器选择Google云端硬盘文件时,所选文件似乎已下载(但到了哪里?)但后来没有任何反应......如何访问下载的文件以在我的应用中使用?
在上面的onActivityResult()
中,如何判断所选文件是否实际上是Google云端硬盘文件,以便我可以相应地对待它?即if (GOOGLE DRIVE FILE)
的测试是什么?
答案 0 :(得分:0)
我认为当选择云端硬盘作为文件选择器时,您正在使用OpenFileActivityBuilder
。它将返回EXTRA_RESPONSE_DRIVE_ID
,这是所选文件的驱动器ID。在此之后,您只需要调用DriveFile.open
来打开所述文件。这可以作为检查您是否选择了驱动器文件选择器的标志。
我无法回答文件的下载位置,但我最好的猜测是它位于应用程序的data/
内(您很可能无法访问)