帮助与文档

> >

一、QQ空间的实例

ShareSDK在默认情况下只提供授权、用户获取资料、分享等功能,在部分平台会提供获取时间线、获取关注或好友列表、执行关注等等操作。但这些功能远不能满足所有的开发者。为了更灵活适应开发者的需求,ShareSDK由提供了自定义接口的功能。利用此接口,可以比较便利地根据不同平台API文档实现适合自己的接口。下面用“QQ空间发表日志”为例子解释此接口的使用:

QZone qzone = new QZone(getContext());
qzone.setPlatformActionListener(this);
String url = "https://graph.qq.com/blog/add_one_blog";
String method = "POST";
short customerAction = ACTION_QZONE;
HashMap<String, Object> values = new HashMap<String, Object>();
values.put("title", getContext().getString(R.string.customer_qzone));
values.put("content", getContext().getString(R.string.blog_sample));
qzone.customerProtocol(url, method, customerAction, values, null);

上面的代码第一行和第二行是构造一个QQ空间的实例,并为之设置操作回调(PlatformActionListener)。

二、自定义接口设置参数

接下来为自定义接口设置参数,包括此API的url,接口调用方式(GET或POST),为接口定义一个回调中可以自己识别的事件代码(ACTION_QZONE),以及接口参数列表。最后一行代码是执行自定义接口,其参数列表为:

名称 类型 说明
url String 方法所属平台目标接口的url
method String 接口的请求方式,可以是“GET”或者“POST”
customerAction short 自定义的用于自己识别事件的代码,此事件代号会通过PlatformActionListener的回调方法返回,通过将方法的action参数和CUSTOMER_ACTION_MASK作与操作,可以得到原来自定义的事件代号
values HashMap<String, Object> 目标接口要求的参数列表,若无须发送参数,则给予null或者空表即可
filePathes HashMap<String, Object> 对于需要发送二进制文件的接口,可以通过此字段携带文件的字段名称和本地路径提交,若无须发送文件,则给予null或者空表即可

ShareSDK已经为给授权方法提供自定义接口,因此开发者可以使用新的授权方法platform.authorize(String[])来自定义授权的权限,其中的String[]参数是权限列表。但是请注意,并不是所有平台都接受权限设置,具体需要参考具体平台的API文档说明。
然后请注意上文中的“customerAction”。ShareSDK为每一个操作都提供一个操作代码,如“分享”事件的操作代码是“ACTION_SHARE”。开发者自定义事件无法直接内置一个操作代码,因此这个接口的操作事件是开发者自己指定的。但是这有限制,开发者可以指定的事件只能是一个short类型的代码,因为此代码进入ShareSDK内部以后会被与一个内部代码Platform.ACTION_CUSTOMER(其值为0xa0000)作或操作,得到一个随事件流移动的操作代码,并会在最后的操作回调中给到开发者。这就是说,开发者将来在PlatformActionListener中得到的操作代码,不是他一开始设置进去的,需要将得到的action和Platform.CUSTOMER_ACTION_MASK作一次与操作,才能得到最初自己传递进去的操作代码

三、接口的支持情况

最后说一下此接口的支持情况。考虑到部分平台无所谓“自定义接口”,而另外一些平台自定义接口实现起来会十分复杂,所以ShareSDK并没有为所有平台提供此接口。现在已实现此接口的平台包括:豆瓣、Facebook、开心网、网易微博、人人网、新浪微博、搜狐微博、QQ空间、腾讯微博、Twitter和有道云笔记

相关文档