如何使用Dropbox SYNC API的writeFromExistingFile(File,boolean)方法?

时间:2014-01-15 09:13:57

标签: android dropbox dropbox-api

我使用writeFromExistingFile(File,boolean)方法从SD CARD文件写入DbxFile。但它不起作用并且提供了Cross链接错误,提到它无法从SDCARD写入DbxFileSystem缓存。任何人都可以提供正确使用此方法的详细信息吗?我也可以将.db文件从SD卡复制到DbxFile系统,因为我不想使用DataStore API吗? 我在编写时遇到的错误是 - E / libDropboxSync.so(ERR)(11250):DROPBOX_ERROR_SYSTEM:file.cpp:737:将/storage/emulated/0/sync_sdk.txt移动到缓存:跨设备链接< /强>

2 个答案:

答案 0 :(得分:0)

在调用rename()(http://linux.die.net/man/3/rename)之后,该消息指示errno == EXDEV。这似乎表明源文件是一个链接,不能使其跨卷(例如SD卡和内部存储之间)工作。这是这种情况吗?有一个先前的检查会拒绝符号链接,但它可能是一个硬链接。或者文档可能只是误导,这可能只是在卷之间移动文件的问题。

通常,使用shouldSteal选项将链接移动到API缓存会导致问题,因为缓存期望具有文件的唯一所有权。您应该设置shouldSteal = false,这将导致DbxFile复制您的输入文件(如果您愿意,可以删除它之后)。无论输入是链接还是输入,只要它是可读的,这应该可以工作。

答案 1 :(得分:0)

我使用此功能从SD卡到Dropbox成功处理了图像(jpg):

DbxFileSystem dbxFiles = DbxFileSystem.forAccount(accountManager.getLinkedAccount());
    //Get the Source
File pictureFile = new File("/sdcard/<Your SD Path>/<Your SD File>");
    //Tell it were you want it
DbxFile bitMap = dbxFiles.create(new DbxPath("<Dbx Path>/<Dbx File>"));
    //write it there
bitMap.writeFromExistingFile(pictureFile, false);

替换&lt;&gt;中的内容与您的信息