使用Google Drive API是否有获取文件名的方法?

4

假设我使用Google Drive API选择要打开的文件。 我有以下代码:

// Getting the drive ID for the file
        DriveId driveId = (DriveId) data
                .getParcelableExtra(OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);

        // Getting the selected file
        DriveFile googleDriveFile = Drive.DriveApi.getFile(googleApiClient,
                driveId);

        googleDriveFile.open(googleApiClient, DriveFile.MODE_READ_ONLY,
                null).setResultCallback(
                new ResultCallback<DriveContentsResult>() {
                    @Override
                    public void onResult(DriveContentsResult result) {
                        if (result.getStatus().isSuccess()) {

有没有办法让我获得此文件的文件名?(不是驱动器ID,而是实际名称?)我试图通过检查其类型(在名称中)来验证所选文件,并且除了获取名称之外,我想不到其他方法来执行此操作。类型为.cblite,是Couchbase Lite数据库文件。通常,我只会通过MIME类型过滤Drive选择器,但据我所知,.cblite不是这些选项之一。因此,我正在尝试通过文件名进行验证。有方法可以实现这一点吗? (或者有没有一种方法可以按杂项/未识别类型过滤MIME类型?)
1个回答

10

是的,一旦您拥有DriveId,就可以获取元数据。其中一个元数据字段是getTitle(),它将为您提供文件/文件夹名称。请查看以下代码片段:

DriveFile googleDriveFile  = Drive.DriveApi.getFile(googleApiClient, driveId);
MetadataResult mdRslt = googleDriveFile .getMetadata(googleApiClient).await();
if (mdRslt != null && mdRslt.getStatus().isSuccess()) {
  mdRslt.getMetadata().getTitle();
}

这里使用'await'语法只是为了方便,它必须在非UI线程上运行。或者将其转换为回调样式。

祝好运


Christina,你的大部分问题可以通过跟随我在你之前提出的问题SO 28439129中指出的Github GDAADemo进行逐步解决。例如,MIME类型可以通过在此处仅请求mime类型来解决: https://github.com/seanpjanson/GDAADemo/blob/master/src/main/java/com/andyscan/gdaademo/GooDrive.java#L113。但是,你必须弄清楚CBLITE MIME类型字符串是什么。 - seanpj
刚刚想到,如果您搜索CBLITE文件(您必须获取所有内容并在本地过滤,因为没有“通配符”支持),然后只需读取“getMimeType()”字段,您就会弄清楚字符串是什么。还可以考虑这个游乐场https://developers.google.com/drive/v2/reference/files/list,它是为RESTful API设计的,但由于GDAA是构建在其之上的,因此您可以在那里交互式运行许多测试。 - seanpj
标题!糟糕,抱歉,我正在查找“获取文件名”,而不是“获取文件标题”,但没有找到结果。此外,.cblite 没有 MIME 类型。我已经调查过了。 - Christina
我不知道CBLITE是什么。但是如果有一个“*.cblite”文件(来自某个CBLITE应用程序),我会将其上传到Drive并使用上面提到的playground来检查元数据的外观。或者发送一个虚拟的文件到seanpjanson@gmail.com,我会查看它。 - seanpj
1
@Christina 如果你认为这个答案准确无误,请接受它作为正确答案,这样其他人也可以受益。 - seanpj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接