我的應用程序看起來像Dropbox sync sdk的Dropbox Notes示例,除了我想在將新文件上傳到Dropbox時在listview中顯示進度條。
示例偵聽文本文件更改爲更新文件,但在我的情況下,我上傳了許多文件類型(文本和二進制文件)。這是我嘗試上傳文件:android dropbox sync api上傳文件並顯示進度條
DbxPath path = new DbxPath("/test.pdf");
DbxAccount acct = NotesAppConfig.getAccountManager(getActivity()).getLinkedAccount();
DbxFile mFile;
DbxFileSystem fs = DbxFileSystem.forAccount(acct);
try {
mFile = fs.open(path);
} catch (DbxException.NotFound e) {
mFile = fs.create(path);
}
mFile.addListener(mChangeListener);
FileOutputStream out = mFile.getWriteStream();
File sdcard = new File(Environment.getExternalStorageDirectory(), "test.pdf");
FileInputStream in = new FileInputStream(sdcard);
copyFile(in, out);
out.close();
in.close();
private final DbxFile.Listener mChangeListener = new DbxFile.Listener() {
@Override
public void onFileChange(DbxFile file) {
try {
if(file.getSyncStatus().pending == PendingOperation.UPLOAD){
long byteTotal = file.getSyncStatus().bytesTotal;
long byteTransfer = file.getSyncStatus().bytesTransferred;
Log.d(TAG, "file changed: " + byteTransfer + "/" + byteTotal);
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
public static void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
}
裝載用這種方法來獲得文件列表:
List<DbxFileInfo> entries = dbxFileSystem.listFolder(dbxPath);
這上面的代碼可以工作,但只有當上傳完成顯示文件列表視圖中。由於該示例使用DbxFileInfo
,因此我不知道如何在上傳時獲取此文件的狀態。
有沒有辦法做到這一點?
你解決了這個問題嗎? –
不幸的是,沒有。我放棄了,轉而使用'core api',這個易於使用和控制我想要的東西。我也把這個問題發佈到dropbox論壇上,但是沒有人回答我:https://forums.dropbox.com/topic.php?id=108295 – R4j