Google云端硬盘Android API - 检查文件夹是否存在

Jak*_*kob 16 android google-drive-api google-drive-android-api

我正在尝试使用新的Google云端硬盘Android API来确定如何检查Google云端硬盘中是否存在文件夹

我已经尝试了以下内容,认为如果找不到文件夹它会崩溃或返回null,但它不会这样做(只要它是有效的DriveId,即使文件夹已被删除).

DriveFolder folder = Drive.DriveApi.getFolder(getGoogleApiClient(), driveId));
Run Code Online (Sandbox Code Playgroud)

如果我尝试创建一个文件,我从上面的代码中得到的文件夹,它也不会崩溃?我显然很难理解这个新API是如何一起工作的,尤其是那些非常有限的教程和SO问题,我真的坚持这个,所以任何输入都将非常感激.

只是为了澄清我的问题:我在指定的Google云端硬盘文件夹中创建了一个文件,但如果该文件夹不存在(已被用户删除),我想先创建它.

Jak*_*kob 8

经过大量的研究,这是我最终得到的代码.它运行正常,但有一个问题:当一个文件夹在Google云端硬盘中被删除时,我需要花一些时间(几小时)才能更新我可以从我的应用程序中获取的元数据,这意味着此代码可以首先检测该文件夹是否已被删除几个小时之后,实际发生了垃圾事件 - 可在此处找到更多信息和讨论.

public class checkFolderActivity extends BaseDemoActivity {

    @Override
    public void onConnected(Bundle connectionHint) {
        super.onConnected(connectionHint);

        DriveId folderId = DriveId.decodeFromString(folderId);
        DriveFolder folder = Drive.DriveApi.getFolder(mGoogleApiClient, folderId);
        folder.getMetadata(mGoogleApiClient).setResultCallback(metadataRetrievedCallback);

    }

     final private ResultCallback<DriveResource.MetadataResult> metadataRetrievedCallback = new
        ResultCallback<DriveResource.MetadataResult>() {
            @Override
            public void onResult(DriveResource.MetadataResult result) {
                if (!result.getStatus().isSuccess()) {
                    Log.v(TAG, "Problem while trying to fetch metadata.");
                    return;
                }

                Metadata metadata = result.getMetadata();
                if(metadata.isTrashed()){
                    Log.v(TAG, "Folder is trashed");
                }else{
                    Log.v(TAG, "Folder is not trashed"); 
                }

            }
        };
}
Run Code Online (Sandbox Code Playgroud)