如何在使用OneDrive选择器获取文件的网络链接后从OneDrive下载文件?

时间:2014-10-24 04:53:09

标签: android picker onedrive

我已在我的应用中实施了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();

2 个答案:

答案 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

但是你应该记住,这不是官方的方式(至少我在微软网站上找不到这些信息)所以微软可能会改变这一点,你的链接就不再适用了。