OneDrive Android SDK导航可用站点

时间:2018-04-11 19:25:34

标签: android onedrive

我正在尝试创建一个用户可以在其租户中访问的所有当前站点的列表并显示它,以便用户以后可以选择要将文件上载到的站点。我正在使用OneDrive for Android SDK

    client.get()
            .getDrive()
            .getItems(root)
            .getChildren()
            .byId(name)
            .getContent()
            .buildRequest()
            .put(contents, callback);

此代码目前将文件上传到root,这是从

获取的ID
    client.get()
            .getDrive()
            .getRoot()
            .buildRequest()

这可以使用https:// {tenant} -my.sharepoint.com/_api/v2.0/me获取我的onedrive的根文件夹。如果我将文件上传到root,该文件将放在我的OneDrive的根目录中。我想将文件上传到我创建的网站“Test”而不是我的根驱动器。

我如何查找并选择其他网站上传我的文件?

1 个答案:

答案 0 :(得分:0)

我最终使用Microsoft Graph SDK来解决我的问题。

找到使用Microsoft Graph Explorer返回所有用户网站的相关MSGraph API端点:

https://graph.microsoft.com/v1.0/sites?search=

创建用于反序列化JSON的类:

public class Site {

@SerializedName("createdDateTime")
private String createdDateTime;

@SerializedName("id")
private String id;

@SerializedName("lastModifiedDateTime")
private String lastModifiedDateTime;

@SerializedName("name")
private String name;

@SerializedName("webUrl")
private String webUrl;

@SerializedName("displayName")
private String displayName;
}



public class Sites {

@SerializedName("value")
private ArrayList<Site> sites;

}

使用MSGraph SDK中的BaseRequest创建一个自定义请求,该请求反序列化返回的JSON:

public class CustomRequest extends BaseRequest {

public CustomRequest(final String requestUrl, final IBaseClient client, final java.util.List<Option> requestOptions) {
    super(requestUrl, client, requestOptions, JsonElement.class);
}

public Sites getSites() throws ClientException {
    Gson gson = new Gson();
    JsonElement re = send(HttpMethod.GET, null);
    Sites sites = gson.fromJson(re, Sites.class);

    return sites;
}

使用AsyncTask调用getSites方法,必要的参数返回一个Site对象集合,其中包含登录用户可以访问的站点。

我没有回答这个问题,希望通过OneDrive SDK可以实现这一点。