我已在我的应用中实施了OneDrive选择器,以允许用户从OneDrive云存储中轻松选择文件。我的应用程序然后获取指向该文件的weblink。我现在想将该文件下载(复制)到Android设备上的本地存储。
我原本以为这会很简单(因为Dropbox下载了他们的选择函数的本地副本部分),但似乎OneDrive没有。我已经做了一些搜索,以找出如何下载文件给weblink,但他们要么似乎复杂或没有工作。
以下是OneDrive选择器的onactivity结果的代码。现在我有了Uri,请帮我解决如何获取文件的本地副本以便我可以使用它。谢谢!
if (requestCode == ONEDRIVE_CHOOSER_REQUEST)
{
// Get the results from the picker
IPickerResult result = mPicker.getPickerResult(requestCode, resultCode, data);
// Handle the case if nothing was picked
if (result != null) {
// Do something with the picked file
Uri fileUri = result.getLink();
答案 0 :(得分:0)
好的,第三次是魅力。虽然我真的很惊讶,没有更简单的下载文件的方法。如果有人有更简单的解决方案,我很乐意听到它。
我遵循了这篇文章的一些建议How to download and save a file from Internet using Java? 并设法从OneDrive下载文件。
public static void download(String address, String localFileName) {
OutputStream out = null;
URLConnection conn = null;
InputStream in = null;
try {
URL url = new URL(address);
out = new BufferedOutputStream(new FileOutputStream(localFileName));
conn = url.openConnection();
in = conn.getInputStream();
byte[] buffer = new byte[1024];
int numRead;
long numWritten = 0;
while ((numRead = in.read(buffer)) != -1) {
out.write(buffer, 0, numRead);
numWritten += numRead;
}
System.out.println(localFileName + "\t" + numWritten);
}
catch (Exception exception) {
exception.printStackTrace();
}
finally {
try {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
catch (IOException ioe) {
}
}
答案 1 :(得分:0)
我不知道选择器给你的URL但是通过OneDrive web这样做你会得到一个只显示文件的链接。但您可以翻译此链接以获得直接下载链接:
您获得的链接:
https://onedrive.live.com/redir?resid=8F99649728BEB2F3%212780
您只需将redir
替换为download
:
https://onedrive.live.com/download?resid=8F99649728BEB2F3%212780
参考:How to get direct download link from OneDrive
但是你应该记住,这不是官方的方式(至少我在微软网站上找不到这些信息)所以微软可能会改变这一点,你的链接就不再适用了。