帮助与文档

> >

Android 接口调用

注意:
本文介绍的是调用ShareSDK的内置(无界面)方法的各项基本原则。如果您想查询“快捷分享”(有界面)的接口调用方法,请参考“快捷分享及其自定义”

接口调用的原则

对于ShareSDK的大部分操作,如:授权、获取资料、分享等等。其接口调用都有固定的格式。下面使用伪代码进行描述:

1、获取平台实例
2、为平台实例添加操作回调
3、调用平台实例的方法实现对应的操作

不管您在什么情况下使用ShareSDK,initSDK都需要在任何操作之前被调用,正因如此,ShareSDK强烈建议您在入口Activity的onCreate方法中就调用initSDK。此外,您也可以在任何您不确定的时候重复调用此方法,这个方法可以无限重复调用,并不会造成太多效率上的损耗。具体的调用说明,可以参考添加代码章节的相关说明。

获取平台列表和实例

intiSDK以后就可以尝试获取平台实例了。“平台实例”是cn.sharesdk.framework.Platform子类的实例。事实上Platform是不能被实例化的,但是它是ShareSDK的核心,利用它就可以完成所有的操作,您甚至不需要知道具体某个平台是怎么操作的。ShareSDK已经发布了很多社会化组件平台工具,但并不是每一个平台您都需要。因此您可以参考 快速集成指南的相关章节,选择您需要平台,以缩减不必要的包体积。
获取已经集成到您项目中的平台实例有两种办法:

// 获取已经注册到SDK的平台实例列表
Platform[] platformList = ShareSDK.getPlatformList(context)

// 获取单个平台
Platform plat = ShareSDK.getPlatform(TencentWeibo.NAME);

第一种办法可以获取已经集成到您项目中的所有平台,通过这个平台数组,您可以结合循环操作,对所有平台进行统一的操作。而第二种方法相对常用,它只是根据您给定的平台名称获取一个平台的实例,然后单独对这个平台进行操作。

设置操作监听

获取平台实例以后还不能立刻执行操作,大部分的操作都是以void返回值的,因为这些操作内部都将开启线程,不能在线程间等到返回值。故ShareSDK的操作,大量使用了回调。下面是设置操作回调的方法:

Platform weibo = ShareSDK.getPlatform(TencentWeibo.NAME);
weibo.setPlatformActionListener(new PlatformActionListener() {

        public void onError(Platform platform, int action, Throwable t) {
                // 操作失败的处理代码
        }

        public void onComplete(Platform platform, int action,
                        HashMap<string, object=""> res) {
                // 操作成功的处理代码
        }

        public void onCancel(Platform platform, int action) {
                // 操作取消的处理代码
        }

});

PlatformActionListener是ShareSDK统一的操作回调。它有三个方法:onComplete、onError和onCancel。分别表示:成功、失败和取消。一般来说,“取消”的事件很少出现,但是授权的时候会有;错误的时候,可以通过对其Throwable参数t执行“t.printStackTrace()”可以得到错误的堆栈。这个堆栈十分重要,如果您向ShareSDK的客服提交bug,请带上这个堆栈,以便他们查询异常。成功的时候,会将操作的结果通过其HashMap<string, object=””>参数res进行返回,返回时的res已经解析,可以根据不同平台的api文档,从res中得到返回体的数据
每一个操作的返回,不管成功失败,都会有一个action,表示这个操作的类型,其值可以参考API文档的相关说明。大部分的回调方法都处于网络线程,因此可以简单默认为回调方法都不在主线程,因此如果要在这些方法进行UI方面的操作,一定要通过Handler发送一个消息给外部来处理。
设置完操作回调,就可以调用不同的操作了。

具体的操作

ShareSDK一般内置了授权、关注、分享、获取好友(或关注)列表、自定义接口等功能,但并非每个平台都支持,具体平台的支持情况,请参考“内置接口支持详情”章节描述。