1

我有一个 DropboxHelper 类,它处理从 Dropbox 下载和上传。下载工作正常,但是当我第一次尝试从保管箱上传代码时。以下行是错误的

if (dropboxFileSystem.isFile(dropboxPath)) {

}

它返回假。告诉应用程序再试一次,这一次它会看到文件并将其上传到应用程序。下面是我在课堂上使用的一些代码。调试似乎表明 Dropbox api 没有完成第一次启动/同步

public class DropBoxHelper {


public DropBoxHelper(Context pContext) {

        context = pContext;
        defineVariables();

}

    private void defineVariables() {

        dropboxAccountManager = DbxAccountManager.getInstance(context.getApplicationContext(), DROPBOX_APP_KEY, DROPBOX_APP_SECRET);
        dropboxPath = new DbxPath(DbxPath.ROOT, DROPBOX_FILE_NAME);


    }

public boolean importFromDropbox() {

        try {

            dropboxFileSystem = DbxFileSystem.forAccount(dropboxAccountManager.getLinkedAccount());

            if (dropboxFileSystem.isFile(dropboxPath)) {

                DbxFile databaseFileonDropbox = dropboxFileSystem.open(dropboxPath);

                try {

                    // Do Copy

                } finally {

                    Log.i(DEBUG_TAG, "Closing File");
                    databaseFileonDropbox.close();

                }

}

关于副本为什么第一次失败的任何想法。谢谢

4

1 回答 1

4

我不是 100% 确定,但我相信您需要使用dropboxFileSystem.awaitFirstSync()以确保在尝试查找文件之前至少与服务器发生了一次同步。

另一种方法可能是dropboxFileSystem.open(...)直接调用并处理文件不存在时引发的异常。

于 2013-06-06T16:31:21.973 回答