我正在为Android开发一个应用程序,它使用Dropbox来组织文件。我正在探索Dropbox API,但其描述和帮助有限,因为没有Dropbox API的文档。
我仍然希望将文件管理为某些功能,例如放置文件并从Dropbox获取文件。现在的问题是当我将一些文件放在Dropbox public 文件夹中时,我需要一个URL来共享应用程序中的联系人。但是在API中我找不到任何返回要共享的文件的Web URL的函数(就像在Dropbox的Deskotop界面中,用户可以获得共享URL发送给朋友)。
有人可以帮我弄清楚如何与应用程序中的联系人共享该文件吗?
或使用Dropbox Android API分享文件的其他任何方式?
答案 0 :(得分:13)
根据在这里提到的DropBox所做的更改:https://www.dropbox.com/help/16/en 将不再有公共文件夹,而是可以通过共享链接访问文件。
如果您使用Android DropBox Core Api,则可以通过以下方式检索共享链接:
// Get the metadata for a directory
Entry dirent = mApi.metadata(mPath, 1000, null, true, null);
for (Entry ent : dirent.contents) {
String shareAddress = null;
if (!ent.isDir) {
DropboxLink shareLink = mApi.share(ent.path);
shareAddress = getShareURL(shareLink.url).replaceFirst("https://www", "https://dl");
Log.d(TAG, "dropbox share link " + shareAddress);
}
}
更新时间:2014/07/20作者Dheeraj Bhaskar 使用以下辅助函数以及上述函数。 由于DropBox开始发送缩短的链接,因此获得正确的链接会有点问题。 现在,我正在使用这种方法:
我们只需加载网址,按照重定向并获取新网址。
String getShareURL(String strURL) {
URLConnection conn = null;
String redirectedUrl = null;
try {
URL inputURL = new URL(strURL);
conn = inputURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
System.out.println("Redirected URL: " + conn.getURL());
redirectedUrl = conn.getURL().toString();
is.close();
} catch (MalformedURLException e) {
Log.d(TAG, "Please input a valid URL");
} catch (IOException ioe) {
Log.d(TAG, "Can not connect to the URL");
}
return redirectedUrl;
}
注意:所有这些当然应该在AsyncTask或Thread中完成。这将生成准备下载的正确链接
更新2014/07/25:Dropbox共享网址的更改
关于期望的URL类型的提醒
来自Dropbox小组:
我们想让您了解即将对URL进行的更改 Dropbox共享链接的结构。虽然不是API的一部分,但是 更改可能会影响操纵从中返回的URL的应用程序 / shares端点或Chooser返回的“预览”链接类型 落英寸
返回的链接现在会附加一个?dl = 0。
,而不是 https://www.dropbox.com/s/99eqbiuiepa8y7n/Fluffbeast.docx,你会的 接收网址 喜欢这个链接 https://www.dropbox.com/s/99eqbiuiepa8y7n/Fluffbeast.docx?dl=0
答案 1 :(得分:2)
Dropbox论坛中一个有用的主题:
http://forums.dropbox.com/topic.php?id=37700&replies=7#post-326432
如果文件的公共链接始终是
dl.dropbox.com/u/<your users uid>/<path under /Public>/filename
然后我们可以使用API在代码中获取和构建公共URL。
也许这也有帮助:将文件上传到Dropbox并复制公共地址。此脚本将文件上传到您的/ Public目录并使用您的accound UID构建它的公共URL。然后,它回显到控制台的URL。
我的Dropbox接口实现中还没有,但这是我需要开发的功能之一。我希望在一两天内更多。
答案 2 :(得分:1)