几个月前我做过类似的项目,从 Dropbox 获取完整路径和最新更改。这是我用过的代码。有您的答案,实际上比您想要的要多,因为代码为您提供了文件夹的最新更改
例如:-删除的图像
在这段代码中,我获取了所有文件夹中包含的所有图像的 url,根据需要进行修改
imageLoadingAsyncTask = new AsyncTask<Void, Void, String[]>() {
ArrayList<String> loadingPaths = new ArrayList<String>();
ArrayList<String> deletedPathList = new ArrayList<String>();
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String[] doInBackground(Void... params) {
Log.i("start background running", "do in background...");
Log.d(TAG, "ddd1");
try {
DeltaPage<Entry> deltaPage;
// initializing cursor
App.initializeCursor(mContext);
do {
deltaPage = mApi.delta(App.getDropBoxCursor(mContext));
App.updateCursor(mContext, deltaPage.cursor);
if (!deltaPage.reset) {
for (DropboxAPI.DeltaEntry<DropboxAPI.Entry> entry : deltaPage.entries) {
if (entry.metadata != null) {
// if (!entry.metadata.isDeleted) {
// Log.d(TAG,
// String.format(
// "entry.metadata (%d) : %s",
// (entry.metadata.contents == null ? 0
// : entry.metadata.contents
// .size()),
// entry.metadata.path));
if (!(entry.metadata.isDir)
&& entry.metadata.thumbExists) {
loadingPaths.add(entry.metadata.path
.toLowerCase());
Log.i("entry path",
"entry path="
+ entry.metadata.path
.toLowerCase());
}
} else {
deletedPathList.add(entry.lcPath
.toLowerCase());
// filesToRemove.add(entry.lcPath);
}
}
} else {
// onDeltaLoadingListener.onReset();
}
} while (deltaPage.hasMore);
} catch (DropboxIOException e) {
e.printStackTrace();
i_activity_dropbox_photo_grid.putExtra("exception", "drop");
} catch (DropboxException e) {
e.printStackTrace();
}
// ---------------end checking dropbox chenges
// ////////////////////////// _list2 =
_list2 = new DropBoxImagePathDataAccess(mContext)
.getAppPathList();
// //// }
if (deletedPathList.size() > 0) {
int x = 0, y = 0;
for (String path : deletedPathList) {
// ////////////////////////////////////////////////////////////////////////////////////////////////
// path = path.replaceAll("['.]", "");
if (_list2.size() > 0 && _list2.contains(path)) {
_list2.remove(path);
new DropBoxImagePathDataAccess(mContext)
.removePath(path);
x = 1;
}
if (loadingPaths.size() > 0
&& loadingPaths.contains(path)) {
loadingPaths.remove(path);
}
// if the user delete a whole folder
// following code will check folder name is contains in
// the paths
// if contains then whole part is removed, since all the
// folder contents also should be remove
for (String path1 : _list2) {
if (_list2.get(y).contains(path.toLowerCase())) {
_list2.remove(y);
new DropBoxImagePathDataAccess(mContext)
.removePath(path1);
}
y++;
}
}
}
// remove duplicate paths
for (String path : _list2) {
// /////////////////////////////////////////////////////////////////////////////////path
// = path.replaceAll("[',,]", "");
if (loadingPaths.contains(path)) {
loadingPaths.remove(path);
}
}
int i = 0;
int size = 0;
size = _list2.size() + loadingPaths.size();
mStrings = new String[size];
// add old paths to mString array
for (String path : _list2) {
if (i < size) {
mStrings[i] = path;
i++;
}
}
// add new paths to mStrings array
ArrayList<String> updatePaths = new ArrayList<String>();
if (loadingPaths.size() > 0) {
for (String newpath : loadingPaths) {
if (!_list2.contains(newpath)) {
updatePaths.add(newpath);
mStrings[i] = newpath;
i++;
}
}
}
// update shared preference
if (updatePaths.size() > 0) {
new DropBoxImagePathDataAccess(mContext)
.createPathList(updatePaths);
}
Log.i("mString size", "mString size=" + mStrings.length);
return mStrings;
}
@Override
protected void onPostExecute(String[] result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
finalImageList = result;
int i1 = 0;
for (String path : finalImageList) {
Log.i("final Image list", "final image list" + " i= " + i1
+ " path= " + path);
}
App.DROP_BOX_ALL_PHOTO_LOCATED = true;
i_activity_dropbox_photo_grid.putExtra("finalList", finalImageList);
startActivity(i_activity_dropbox_photo_grid);
overridePendingTransition(R.anim.activity_from_right,
R.anim.activity_to_left);
finish();
}
};