2012-11-11 65 views
2

我有一個問題,爲Android設置dropbox-sdk。當開始執行代碼時,我得到以下"Unfortunately xxx has stopped"Dropbox SDK設置/身份驗證問題。

起初我以爲問題可能出現在清單文件中,因爲通常當我沒有正確設置權限時出現錯誤。但是,它在網站上表示,唯一需要進行身份驗證的權限是互聯網。我將把清單文件放在下面。

當我打電話AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET)AccessType ACCESS_TYPE = AccessType.APP_FOLDER和我的生活我不明白爲什麼會引發錯誤。聲明(但不是初始化)DropboxAPI<AndroidAuthSession> mDBApi是好的,這表明庫正在正確導入。

我已經在下面改變它們,所以你們都必須聽取我的意見,但密鑰/祕密常量也是正確的,所以我懷疑它是這樣的。這是我的主要活動的一個片段:

package com.example.xxx.app; 

import com.dropbox.client2.DropboxAPI; 
import com.dropbox.client2.android.AndroidAuthSession; 
import com.dropbox.client2.session.AppKeyPair; 
import com.dropbox.client2.session.Session.AccessType; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.content.SharedPreferences; 
import android.util.Log; 
import android.view.Menu; 

public class MainActivity extends Activity { 

final static private String APP_KEY = "1234key"; 
final static private String APP_SECRET = "1234secret"; 

DropboxAPI<AndroidAuthSession> mDBApi; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    AccessType ACCESS_TYPE = AccessType.APP_FOLDER; 
    AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET); 
    AndroidAuthSession session = new AndroidAuthSession(appKeys, ACCESS_TYPE); 
    mDBApi = new DropboxAPI<AndroidAuthSession>(session); 
    setContentView(R.layout.activity_main); 


} 

我的清單文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.xxx.app" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

<uses-sdk 
    android:minSdkVersion="15" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

     <!-- Dropbox Manifest --> 
     <activity 
     android:name="com.dropbox.client2.android.AuthActivity" 
     android:launchMode="singleTask" 
     android:configChanges="orientation|keyboard"> 
     <intent-filter> 
     <data android:scheme="db-mykey" /> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.BROWSABLE"/> 
     <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

</application> 

</manifest> 

回答

0

哪裏是你的onResume()?

protected void onResume() { 
    super.onResume(); 

    // ... 

    if (mDBApi.getSession().authenticationSuccessful()) { 
     try { 
      // MANDATORY call to complete auth. 
      // Sets the access token on the session 
      mDBApi.getSession().finishAuthentication(); 

      AccessTokenPair tokens = mDBApi.getSession().getAccessTokenPair(); 

      // Provide your own storeKeys to persist the access token pair 
      // A typical way to store tokens is using SharedPreferences 
      storeKeys(tokens.key, tokens.secret); 
     } catch (IllegalStateException e) { 
      Log.i("DbAuthLog", "Error authenticating", e); 
     } 
    } 

    // ... 
} 

https://www.dropbox.com/developers/start/authentication#android

+0

問題出在classpath上。此外,onResume()方法還沒有實現,但這不是導致原始崩潰的原因。有幾個罐子(包括一個叫做json-simple的罐子)必須被添加到classpath才能工作 –

1

轉到this網站和應用程序創建第一。 Dropbox將爲您提供兩個密鑰:APP_KEY和APP_SECRET。這些密鑰的結果值放入您的應用中。如果您發現任何問題,請讓我知道。請致電here

+0

問題在於類路徑。此外,onResume()方法還沒有實現,但這不是導致原始崩潰的原因。有幾個罐子(包括一個叫json-simple的罐子)必須被添加到類路徑才能工作 –