2011-04-18 56 views
0

我目前正在嘗試將DropBox實現到我的Android應用程序中。我爲Android添加了客戶端jar文件,當我嘗試登錄到我的開發Dropbox帳戶時,它一直在強制關閉我的應用程序。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"); 
       } 
      } 
     } 
    } 
} 

它不斷在logcat中想出的堆棧跟蹤誤差如下 致命異常代碼:#的AsyncTask 1 了java.lang.RuntimeException :執行doInBackground()時發生錯誤

如果任何人都可以提供任何幫助,這個問題將不勝感激。

編輯 通過@Kannan Goundan發現,在它正被Java.Lang.NoClassDefFoundError導致異常:oath.signpost.basic.DefaultOAuthConsumer

我想不通這是什麼意思或如何我可以解決這個問題,

+0

'RuntimeException'可能是一個真正的異常的包裝。堆棧跟蹤是否包含「由...引起」行?如果沒有,嘗試捕獲'RuntimeException'並調用'getCause()'來獲得真正的異常。 – 2011-04-18 23:41:42

+0

感謝您的回覆。我已經爲提供有關由行導致的運行時異常的信息的問題添加了一個編輯。 – Boardy 2011-04-19 16:16:17

+0

抱歉,我無法給出答案,但scribe-java oauth庫已經內置DropBox支持https://github.com/fernandezpablo85/scribe-java – schwiz 2011-04-19 18:20:57

回答

0

我設法解決了這個問題。我沒有將一個jar文件(signpost-core)導入到項目構建路徑中。一旦這個進口它然後工作得很好。