DropBox API возвращает в Android «ASyncTask # 1 java.lang.RuntimeException» - PullRequest
0 голосов
/ 19 апреля 2011

В настоящее время я пытаюсь внедрить DropBox в мое приложение для Android. Я добавил клиентский файл JAR для Android, и когда я пытаюсь войти в свою учетную запись Dropbox, он продолжает принудительно закрывать мое приложение.

Ниже приведен код, который я использую, где он идет не так

import android.os.AsyncTask;
import android.util.Log;

import com.dropbox.client.DropboxAPI;

public class LoginASyncTask extends AsyncTask<Void, Void, Integer> {

    private static final String TAG =  "LoginASyncTask";

    String mUser;
    String mPassword;
    String mErrorMessage = "";
    DropBoxLogin mDropBoxLogin;
    DropboxAPI.Config mConfig;
    DropboxAPI.Account mAccount;

    public LoginASyncTask(DropBoxLogin act, String user, String password, DropboxAPI.Config config)
    {
        super();
        mDropBoxLogin = act;
        mUser = user;
        mPassword = password;
        mConfig = config;
    }

    @Override
    protected Integer doInBackground(Void...params)
    {
        try
        {
            DropboxAPI api = mDropBoxLogin.getAPI();

            int success = DropboxAPI.STATUS_NONE;
            if (!api.isAuthenticated())
            {
                                //Going wrong on this line
                mConfig = api.authenticate(mConfig, mUser, mPassword);
                mDropBoxLogin.setConfig(mConfig);

                success = mConfig.authStatus;

                if (success != DropboxAPI.STATUS_SUCCESS)
                {
                    return success;
                }
            }
            mAccount = api.accountInfo();

            if (!mAccount.isError())
            {
                return DropboxAPI.STATUS_SUCCESS;
            }
            else
            {
                Log.d(TAG, "Account Info Error: " + mAccount.httpCode + " " + mAccount.httpReason);
                return DropboxAPI.STATUS_FAILURE;
            }

        }
        catch (Exception e)
        {
            Log.d(TAG, "Error in loggin in", e);
            return DropboxAPI.STATUS_NETWORK_ERROR;
        }
    }

    @Override
    protected void onPostExecute(Integer result)
    {
        if (result == DropboxAPI.STATUS_SUCCESS)
        {
            if (mConfig != null && mConfig.authStatus == DropboxAPI.STATUS_SUCCESS)
            {
                mDropBoxLogin.storeKeys(mConfig.accessTokenKey, mConfig.accessTokenSecret);
                mDropBoxLogin.setLoggedIn(true);
                mDropBoxLogin.showToast("Logged into dropbox");
            }
            if (mAccount != null)
            {
                mDropBoxLogin.displayAccountInfo(mAccount);
            }
            else
            {
                if (result == DropboxAPI.STATUS_NETWORK_ERROR)
                {
                    mDropBoxLogin.showToast("Network Error: " + mConfig.authDetail);
                }
                else
                {
                    mDropBoxLogin.showToast("Unsuccessful Login");
                }
            }
        }
    }
}

Он продолжает выдавать ошибку трассировки стека в logcat следующим образом

FATAL Исключение: ASyncTask # 1 java.lang.RuntimeException: произошла ошибка при выполнении doInBackground ()

Редактировать

@Kannan Goundan обнаружил, что в исключении это вызвано:

Java.Lang.NoClassDefFoundError: oath.signpost.basic.DefaultOAuthConsumer

Я не могу понять, что это значит или как я могу решить эту проблему.

1 Ответ

0 голосов
/ 21 апреля 2011

Мне удалось решить проблему.Я не импортировал один из файлов jar (signpost-core) в путь сборки проекта.После того, как это было импортировано, оно работало нормально.

...