Android - 上传到Dropbox
我在这里错过了什么吗?我的代码踢基于这段代码上传到Dropbox的NullPointerException。Android - 上传到Dropbox
File file = new File(mFileMag.getCurrentDir() +"/"+ mSelectedListItem);
System.out.println(file);
inputStream = new FileInputStream(file);
System.out.println(inputStream);
Entry newEntry = mDBApi.putFile("/" + mSelectedListItem, inputStream,
file.length(), null, null);
System.out.println(newEntry);
system.out命令的结果看起来没问题。 inputStream变量输出“[email protected]”,我有点困惑,但文件变量的systemout显示正确的路径和文件名。 nullPointerException似乎来自newEntry变量的设置,这对我来说是毫无意义的。 Eclipse将代码显示为语法正确。这Dropbox垃圾正在杀死我。
@BenHolland - 如果我硬编码如下的路径 -
case D_MENU_SEND:
// Uploading content.
FileInputStream inputStream = null;
try {
//File file = new File(mFileMag.getCurrentDir() +"/"+ mSelectedListItem);
File file = new File("/sdcard0/DCIM/100ANDRO/deploy.json");
System.out.println(file);
inputStream = new FileInputStream(file);
System.out.println(inputStream);
Entry newEntry = mDBApi.putFile("/Dropbox/", inputStream,
file.length(), null, null);
System.out.println(newEntry);
Log.i("DbExampleLog", "The uploaded file's rev is: " + newEntry.rev);
} catch (DropboxUnlinkedException e) {
// User has unlinked, ask them to link again here.
Log.e("DbExampleLog", "User has unlinked.");
} catch (DropboxException e) {
Log.e("DbExampleLog", "Something went wrong while uploading.");
} catch (FileNotFoundException e) {
Log.e("DbExampleLog", "File not found.");
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {}
}
}
这仅仅生成的logcat这当然是从捕获(FileNotFoundException异常)来“文件未找到”。我不过收到NullPointerException。如果您在代码顶部看到 - case语句 - 此代码正在点击上下文菜单后运行。
_____________________________________Updated code__________________________________________
// Uploading content.
FileInputStream inputStream = null;
File upfile = new File(mFileMag.getCurrentDir() + "/" + mSelectedListItem);
try {
inputStream = new FileInputStream(upfile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println(upfile);
System.out.println(inputStream);
try {
Entry upEntry = mDBApi.putFile("/test.rar", inputStream,upfile.length(), null, null);
System.out.println(upEntry);
} catch (DropboxException e) {
e.printStackTrace();
}
所以我已经更新的代码这一点。我是否对路径进行硬编码似乎是无关紧要的。即使我这样做,Entry upEntry行也会导致NullPointerException。我很茫然。我无法看到任何会导致这种情况的事情。
________________________________Stack从nullPointerException_______________________
02-14 13:28:07.370: W/dalvikvm(311): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
02-14 13:28:07.380: E/AndroidRuntime(311): FATAL EXCEPTION: main
02-14 13:28:07.380: E/AndroidRuntime(311): java.lang.NullPointerException
02-14 13:28:07.380: E/AndroidRuntime(311): at com.stavox.zircon.Main.onContextItemSelected(Main.java:722)
02-14 13:28:07.380: E/AndroidRuntime(311): at android.app.Activity.onMenuItemSelected(Activity.java:2199)
02-14 13:28:07.380: E/AndroidRuntime(311): at com.android.internal.policy.impl.PhoneWindow$ContextMenuCallback.onMenuItemSelected(PhoneWindow.java:2744)
02-14 13:28:07.380: E/AndroidRuntime(311): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)
02-14 13:28:07.380: E/AndroidRuntime(311): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
02-14 13:28:07.380: E/AndroidRuntime(311): at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:137)
02-14 13:28:07.380: E/AndroidRuntime(311): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:874)
02-14 13:28:07.380: E/AndroidRuntime(311): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
02-14 13:28:07.380: E/AndroidRuntime(311): at android.widget.ListView.performItemClick(ListView.java:3382)
02-14 13:28:07.380: E/AndroidRuntime(311): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
02-14 13:28:07.380: E/AndroidRuntime(311): at android.os.Handler.handleCallback(Handler.java:587)
02-14 13:28:07.380: E/AndroidRuntime(311): at android.os.Handler.dispatchMessage(Handler.java:92)
02-14 13:28:07.380: E/AndroidRuntime(311): at android.os.Looper.loop(Looper.java:123)
02-14 13:28:07.380: E/AndroidRuntime(311): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-14 13:28:07.380: E/AndroidRuntime(311): at java.lang.reflect.Method.invokeNative(Native Method)
02-14 13:28:07.380: E/AndroidRuntime(311): at java.lang.reflect.Method.invoke(Method.java:521)
02-14 13:28:07.380: E/AndroidRuntime(311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-14 13:28:07.380: E/AndroidRuntime(311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-14 13:28:07.380: E/AndroidRuntime(311): at dalvik.system.NativeStart.main(Native Method)
有当我点击时发生的堆栈跟踪追查 “发送到Dropbox的”。我想如果我打破整个过程,可能会让人更容易帮忙。
- 启动应用的列表视图 - 它的文件管理器应用程序 - main.java
- 用户点击菜单上的一个按钮,启动保管箱授权 - 按钮加载DropboxfileuploadActivity.java - 这就是其中AUTH完成 - 这将在auth后将它们返回到main.java。
- 用户导航到他们想要上传的文件
- 用户长时间点击该文件并出现上下文菜单 - 这也由Main.java处理。
-
上下文菜单包含一个“Send To Dropbox”项目。点击后,它指向包含我们在这里查看的代码的case语句。那是什么在产生NullPointerException。正如你所看到的,第722行是违规行。这条线是
Entry upEntry = mDBApi.putFile("/test.rar", inputStream,upfile.length(), null, null);
_____________________________________________Solution_______________________________________
所以这里就是我最后做来解决这个问题:
以前我是两个文件之间的工作。我在Main.java中使用了Dropbox的authcode,并在Dropboxfileuploadactivity.java中使用了实际的上传代码。无论我尝试了什么,我都无法通过这种方式获得上传。我每次都收到一个NullPointerException异常。我最初将它归咎于变量,并且无法使用Dropbox方法。经过几天的努力,最终,将认证代码和上传代码一起移动到Main.java是解决了我的问题。不再有NullPointerExceptions。奇怪的,但它的工作。变量工作正常。
因此,继承人什么我落得这样做来解决这个问题:
以前我是两个文件之间的工作。我在Main.java中使用了Dropbox的authcode,并在Dropboxfileuploadactivity.java中使用了实际的上传代码。无论我尝试了什么,我都无法通过这种方式获得上传。我每次都收到一个NullPointerException异常。我最初将它归咎于变量,并且无法使用Dropbox方法。经过几天的努力,最终,将认证代码和上传代码一起移动到Main.java是解决了我的问题。不再有NullPointerExceptions。奇怪的,但它的工作。变量工作正常。
你可以打印堆栈跟踪什么的?除了疯狂的猜测之外,你还没有给任何人提供足够的信息来真正帮助你。 – 2013-02-13 02:57:13
你可以用硬编码文件成功执行此操作吗?这里是一个例子 - > https://www.dropbox.com/static/developers/dropbox-android-sdk-1.5.3-docs/index.html – 2013-02-13 03:02:36
@BenHolland - 我在底部添加了更多的信息和代码原来的帖子。 – 2013-02-13 04:08:46