我正在写一个上传文件到Dropbox的Android应用程序。然而,我不知道为什么在阅读了一些关于DropboxUnlinkedException的文章后,我在运行时遇到了StackOverflow。谁能告诉我这是什么问题?实际上,我是JAVA和Android的新手。希望您能详细说明问题和解决方案。非常感谢!:D (备注:我已经检查到可以调用uploadFile方法。但是没有任何响应get。我很困惑。)
public class ConnectToDropBox extends Activity {
final static private String APP_KEY = "16u74380lodkknv";
final static private String APP_SECRET = "westpz8i6mqn15g";
final static private AccessType ACCESS_TYPE = AccessType.DROPBOX;
// In the class declaration section:
private DropboxAPI<AndroidAuthSession> mDBApi;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// And later in some initialization function:
AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys,
ACCESS_TYPE);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
mDBApi.getSession().startOAuth2Authentication(ConnectToDropBox.this);
try {
uploadFile();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DropboxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void onResume() {
super.onResume();
if (mDBApi.getSession().authenticationSuccessful()) {
try {
// Required to complete auth, sets the access token on the
// session
mDBApi.getSession().finishAuthentication();
String accessToken = mDBApi.getSession().getOAuth2AccessToken();
} catch (IllegalStateException e) {
Log.i("DbAuthLog", "Error authenticating", e);
}
}
}
public void uploadFile() throws DropboxException, FileNotFoundException {
File file = new File("/sdcard/letschat/data/backup.txt.part.1");
FileInputStream inputStream = new FileInputStream(file);
Entry response = mDBApi.putFile(
"/sdcard/letschat/data/backup.txt.part.1", inputStream,
file.length(), null, null);
Toast.makeText(ConnectToDropBox.this, "HIHI", Toast.LENGTH_SHORT)
.show();
}
}LogCat如下:
03-28 20:27:28.269: W/System.err(8283): com.dropbox.client2.exception.DropboxUnlinkedException
03-28 20:27:28.273: W/System.err(8283): at com.dropbox.client2.DropboxAPI.assertAuthenticated(DropboxAPI.java:2525)
03-28 20:27:28.273: W/System.err(8283): at com.dropbox.client2.DropboxAPI.putFileRequest(DropboxAPI.java:2177)
03-28 20:27:28.273: W/System.err(8283): at com.dropbox.client2.DropboxAPI.putFileRequest(DropboxAPI.java:1498)
03-28 20:27:28.273: W/System.err(8283): at com.dropbox.client2.DropboxAPI.putFile(DropboxAPI.java:1458)
03-28 20:27:28.277: W/System.err(8283): at com.tolmms.backup.ConnectToDropBox.uploadFile(ConnectToDropBox.java:74)
03-28 20:27:28.277: W/System.err(8283): at com.tolmms.backup.ConnectToDropBox.onCreate(ConnectToDropBox.java:45)
03-28 20:27:28.277: W/System.err(8283): at android.app.Activity.performCreate(Activity.java:5008)
03-28 20:27:28.277: W/System.err(8283): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-28 20:27:28.277: W/System.err(8283): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
03-28 20:27:28.277: W/System.err(8283): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
03-28 20:27:28.277: W/System.err(8283): at android.app.ActivityThread.access$600(ActivityThread.java:130)
03-28 20:27:28.277: W/System.err(8283): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
03-28 20:27:28.277: W/System.err(8283): at android.os.Handler.dispatchMessage(Handler.java:99)
03-28 20:27:28.277: W/System.err(8283): at android.os.Looper.loop(Looper.java:137)
03-28 20:27:28.277: W/System.err(8283): at android.app.ActivityThread.main(ActivityThread.java:4745)
03-28 20:27:28.281: W/System.err(8283): at java.lang.reflect.Method.invokeNative(Native Method)
03-28 20:27:28.281: W/System.err(8283): at java.lang.reflect.Method.invoke(Method.java:511)
03-28 20:27:28.281: W/System.err(8283): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-28 20:27:28.281: W/System.err(8283): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-28 20:27:28.281: W/System.err(8283): at dalvik.system.NativeStart.main(Native Method)发布于 2015-02-23 15:37:13
文档有点糟糕,它没有告诉你,如果你不使用onResume,如何编写代码。我在一个服务中调用了upload。
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(God.TAG, "Initializing Dropbox");
AppKeyPair appKeys = new AppKeyPair(God.DROPBOX_APP_KEY,
God.DROPBOX_APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
mDBApi.getSession().startOAuth2Authentication(this);
if (mDBApi != null && mDBApi.getSession().authenticationSuccessful()) {
try {
// Required to complete auth, sets the access token on the session
mDBApi.getSession().finishAuthentication();
UploadDB2DropBox upload2DropBox = new UploadDB2DropBox(this,
mDBApi);
upload2DropBox.execute();
//String accessToken = mDBApi.getSession().getOAuth2AccessToken();
} catch (IllegalStateException e) {
Log.i(God.TAG, "Error authenticating", e);
}
}
return super.onStartCommand(intent, flags, startId);
}https://stackoverflow.com/questions/22712926
复制相似问题