在Android中,DropBox API返回“ ASyncTask#1 java.lang.RuntimeException”

问题描述

|| 我目前正在尝试在我的Android应用中实现DropBox。我已经为Android添加了客户端jar文件,当我尝试登录到我的开发保管箱帐户时,它会继续强制关闭我的应用程序。 下面是我在哪里出错的代码
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中提出堆栈跟踪错误,如下所示 致命异常:ASyncTask#1 java.lang.RuntimeException:执行doInBackground()时发生错误 编辑 @Kannan Goundan发现,这是由以下原因引起的: java.lang.NoClassDefFoundError:oath.signpost.basic.DefaultOAuthConsumer 我不知道这意味着什么或如何解决此问题。

解决方法

我设法解决了这个问题。我没有将一个jar文件(signpost-core)导入项目构建路径。一旦将其导入,便可以正常工作。