James Dudley
James Dudley

Reputation: 957

Dropbox Sync Api. Not seeing the File on Dropbox the first time round

I have a DropboxHelper Class that is handling downloading and uploading from dropbox. Downloading works fine but when I try to upload from dropbox the first time the code is called. The following Line is false

if (dropboxFileSystem.isFile(dropboxPath)) {

}

It returns false. Tell the app to try again and this time it sees the file and uploads it to the app. Below is some of the code I am using for the class. Debug seems to incdicate the dropbox api has not completing started / synced the first time

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();

                }

}

Any ideas on why the copy fails first time. Thanks

Upvotes: 1

Views: 472

Answers (1)

user94559
user94559

Reputation: 60143

I'm not 100% sure, but I believe you need to use dropboxFileSystem.awaitFirstSync() to make sure at least one sync with the server has happened before you try to find the file.

An alternative might be to just call dropboxFileSystem.open(...) directly and handle the exception that's raised if the file doesn't exist.

Upvotes: 4

Related Questions