【问题标题】:Is there a way to get the name of a file using the Google Drive API?有没有办法使用 Google Drive API 获取文件的名称?
【发布时间】:2015-02-13 15:50:53
【问题描述】:

假设我使用 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 类型过滤驱动器选择器,但 .cblite(据我所知)不是这些选项之一。相反,我试图通过文件名进行验证。

有没有办法做到这一点? (或者有没有办法通过杂项/未识别类型过滤 MIME 类型?)

【问题讨论】:

    标签: android mime-types google-drive-android-api


    【解决方案1】:

    是的,一旦您拥有 DriveId,您就可以获得元数据。元数据字段之一是 getTitle(),它将为您获取文件/文件夹名称。看这段代码sn -p:

    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 类型:@ 987654321@。不过,您必须弄清楚 CBLITE mime 类型字符串是什么。
    • .. 我突然想到,如果您搜索 CBLITE 文件(您必须获取所有内容并在本地过滤它,因为没有“通配符”支持)并且只需阅读“getMimeType( )' 字段,您将知道字符串是什么。考虑一下这个游乐场developers.google.com/drive/v2/reference/files/list,它是为 RESTful API 设计的,但由于 GDAA 是在它之上构建的,因此您可以在那里交互式地运行大量测试。
    • 标题!该死,对不起,我正在查找“获取文件名”,“未获取文件标题”,但没有找到任何结果。此外,.cblite 没有 MIME 类型。我已经调查过了。
    • 不知道 CBLITE 是什么。但是我会拿一个“*.cblite”文件(来自一些 CBLITE 应用程序),将它上传到驱动器并使用我上面提到的游乐场来检查元数据的样子。或者给我发一个假的到 seanpjanson@gmail.com,我会看看。
    • @Christina 如果您认为答案是正确的,请接受它是正确的,以便其他人受益。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多