2011-04-18 5 views
0

현재 DropBox를 Android 앱에 구현하려고합니다. 안드로이드 용 클라이언트 jar 파일을 추가했고 개발 용 보관 용 계정에 로그인하려고 할 때 강제로 내 앱을 닫습니다. AsyncTask를 # 1 java.lang.RuntimeException가 : 아래 DropBox API Android 개발 문제

는 잘못 치명적인 예외를 다음과 같이이 로그 캣의 스택 트레이스 오류로 올라오고 계속해서

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"); 
       } 
      } 
     } 
    } 
} 

를 어디로 내가 사용하고있는 코드입니다 : doInBackground() 실행 중 오류가 발생했습니다.

누구든지이 문제에 대한 도움을 제공 할 수 있다면 크게 감사하겠습니다. oath.signpost.basic.DefaultOAuthConsumer

나는 이것이 의미 나 방법을 알아낼 수 없습니다 : 그것은 java.lang.NoClassDefFoundError가 발생되고있는 예외가 있음을 @Kannan Goundan에 의해 찾을 수

편집 이 문제를 해결할 수 있습니다.

+0

'RuntimeException'은 아마도 실제 예외를 감싸는 래퍼 일 것입니다. 스택 추적에 "원인"행이 있습니까? 그렇지 않다면'RuntimeException'을 잡고'getCause()'를 호출하여 실제 예외를 얻으십시오. –

+0

답장을 보내 주셔서 감사합니다. 줄로 인한 런타임 예외에 대한 정보를 제공하는 질문에 대한 편집을 추가했습니다. – Boardy

+0

죄송합니다 답변을 드릴 수는 없지만 scribe-java oauth 라이브러리는 DropBox 지원이 내장되어 있습니다 https://github.com/fernandezpablo85/scribe-java – schwiz

답변

0

문제를 해결할 수있었습니다. jar 파일 중 하나 (푯말 - 코어)를 프로젝트 빌드 경로로 가져 오지 않았습니다. 일단 이것이 수입되면 그것은 잘 작동했다.