写点什么

ShareSDK Android SDK API

  • 2023-04-19
    上海
  • 本文字数:4837 字

    阅读完需:约 16 分钟

获取用户信息接口(showUser)

//cn.sharesdk.framework/** * 获取用户信息 * @param account  获取指定账号的用户信息,直接设置成null */  public void showUser(String account)
复制代码


示例代码


//设置授权登录的平台Platform plat = ShareSDK.getPlatform(QQ.NAME);//授权回调监听,监听oncomplete,onerror,oncancel三种状态plat.setPlatformActionListener(platformActionListener);//抖音登录适配安卓9.0//ShareSDK.setActivity(MainActivity.this);plat.showUser(null);
复制代码

授权接口(authorize)

//cn.sharesdk.framework/** * 第三方授权 */   public void authorize()
复制代码


示例代码


Platform plat = ShareSDK.getPlatform(Facebook.NAME);//授权回调监听,监听oncomplete,onerror,oncancel三种状态plat.setPlatformActionListener(new PlatformActionListener() {  public void onError(Platform platform, int i, Throwable throwable) {   //失败的回调,授权失败的回调 platform:平台对象,i:表示当前的动作(9表示分享),throwable:异常信息     }   public void onComplete(Platform platform, int i, HashMap arg2) {  //分享成功的回调   }   public void onCancel(Platform platform, int i) {   //取消分享的回调   }});//抖音登录适配安卓9.0//ShareSDK.setActivity(this);plat.authorize();
复制代码

其他辅助接口

除此方法,ShareSDK 还提供一些辅助方法,如下所示:


plat.removeAccount(true)


移除授权状态和本地缓存,下次授权会重新授权获取新的授权信息


plat.SSOSetting(false)


SSO 授权,传 false 默认是客户端授权,没有客户端授权或者不支持客户端授权会跳 web 授权;设置成 true 是关闭 SSO 授权(关闭客户端授权)


plat.setPlatformActionListener(this)


授权回调监听,监听 oncomplete,onerror,oncancel 三种状态


plat.isAuthValid()


判断是否已经存在授权状态,可以根据自己的登录逻辑设置


ShareSDK.setActivity(this);


抖音登录适配安卓 9.0

判断客户端是否安装接口(isClientValid)

ShareSDK 3.10.7 版本开始支持


//cn.sharesdk.framework/** * 授权回调 * @param callback  回调结果 */    public void isClientValid(final ShareSDKCallback<Boolean> callback)
复制代码


示例代码


Platform plat = ShareSDK.getPlatform(Facebook.NAME);  plat.isClientValid(new ShareSDKCallback<Boolean>() {     @Override     public void onCallback(Boolean aBoolean) {     //判断是否存在授权凭条的客户端,true是有客户端,false是无客户端}});
复制代码

授权回调接口(setPlatformActionListener)

//cn.sharesdk.framework/** * 授权回调 * @param callback  回调结果 */  public void setPlatformActionListener(PlatformActionListener callback)
复制代码


示例代码


qzone.setPlatformActionListener(new PlatformActionListener() {  public void onError(Platform platform, int i, Throwable throwable) {  //授权失败的回调 platform:平台对象,i:表示当前的动作(9表示分享),throwable:异常信息    }  public void onComplete(Platform platform, int i, HashMap arg2) {    //授权成功的回调      //输出所有授权信息     arg0.getDb().exportData();  }  public void onCancel(Platform platform, int i) {   //授权取消的回调    }  });
复制代码

一键分享接口(show)

//cn.sharesdk.onekeyshare/** * 一键分享 * @param context  分享参数 */  public void show(Context context)
复制代码


示例代码


final OnekeyShare oks = new OnekeyShare();    //指定分享的平台,如果为空,还是会调用九宫格的平台列表界面    if (platform != null) {        oks.setPlatform(platform);    }    // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用    oks.setTitle("标题");    // titleUrl是标题的网络链接,仅在Linked-in,QQ和QQ空间使用    oks.setTitleUrl("http://sharesdk.cn");    // text是分享文本,所有平台都需要这个字段    oks.setText("我是分享文本");    //分享网络图片,新浪微博分享网络图片需要通过审核后申请高级写入接口,否则请注释掉测试新浪微博    oks.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");    // url仅在微信(包括好友和朋友圈)中使用    oks.setUrl("http://sharesdk.cn");    //分享回调    oks.setCallback(new PlatformActionListener() {     @Override      public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {      // 分享成功回调      }         @Override      public void onError(Platform platform, int i, Throwable throwable) {      // 分享失败回调   platform:平台对象,i:表示当前的动作(9表示分享),throwable:异常信息  
} @Override public void onCancel(Platform platform, int i) { // 分享取消回调 } }); // 启动分享 oks.show(MobSDK.getContext());
复制代码

指定平台单独分享接口(share)

//cn.sharesdk.framework/** * 单独分享 * @param params  分享参数 */  public void share(Platform.ShareParams params)
复制代码


示例代码


下面分别使用 Twitter 和 QQ 作为例子,举例如何利用此方法实现分享功能。

Twitter 分享

ShareParams sp = new ShareParams();sp.setText("测试分享的文本");sp.setImagePath("/mnt/sdcard/测试分享的图片.jpg");Platform tw = ShareSDK.getPlatform(Twitter.NAME);// 设置分享事件回调(注:回调放在不能保证在主线程调用,不可以在里面直接处理UI操作)tw.setPlatformActionListener (new PlatformActionListener() {    public void onError(Platform platform, int i, Throwable throwable) {        // 失败的回调, platform:平台对象,i:表示当前的动作(9表示分享),throwable:异常信息      }    public void onComplete(Platform platform, int i, HashMap arg2) {        // 分享成功的回调    }    public void onCancel(Platform platform, int i) {        // 取消分享的回调    } });// 执行图文分享tw.share(sp);
复制代码

QQ

ShareParams sp = new ShareParams();sp.setTitle("测试分享的标题");sp.setTitleUrl("http://sharesdk.cn"); // 标题的超链接sp.setText("测试分享的文本");sp.setImageUrl("http://www.someserver.com/测试图片网络地址.jpg");sp.setSite("发布分享的网站名称");sp.setSiteUrl("发布分享网站的地址");Platform qq = ShareSDK.getPlatform (QQ.NAME);// 设置分享事件回调(注:回调放在不能保证在主线程调用,不可以在里面直接处理UI操作)qq.setPlatformActionListener (new PlatformActionListener() {    public void onError(Platform platform, int i, Throwable throwable) {        // 失败的回调,platform:平台对象,i:表示当前的动作(9表示分享),throwable:异常信息      }    public void onComplete(Platform platform, int i, HashMap arg2) {        // 分享成功的回调    }    public void onCancel(Platform platform, int i) {        // 取消分享的回调    }});// 执行图文分享qq.share(sp);
复制代码


具体各个平台具体所需参数可以参考不同平台的详细参数说明;


ShareSDK 的每一个平台都有自己的 ShareParams,由于平台差异,不同平台之间的 ShareParams 字段数量不一样,但是同样名称的字段都表示相同的含义,下面是当前 ShareSDK 所有平台 ShareParams 的字段的名称和代表的含义:


字段名称


描述


text


待分享的文本


imagePath


待分享的本地图片。如果目标平台使用客户端分享,此路径不可以在/data/data 下面


filePath


待分享的文件路径。这个用在 Dropbox 和 Wechat 中


title


分享内容的标题


notebook


存放笔记的笔记本,如果不存在,会创建。一般用在印象笔记等“笔记类”平台中


stack


印象笔记中的字段,用于归类笔记本


resource


印象笔记中的字段,数组,暂时支持 String 类型和 File 类型的元素。如果想一次发送多个文本和图片,需要使用这个字段


tags


标签,数组,部分平台支持为分享内容设置标签,可以使用这个字段


isPublic


印象笔记和 flickr 的字段,表示是否公开


isFriend


flickr 和 VK 的字段,表示是否公开给自己的朋友


isFamily


flickr 的字段,表示是否公开给自己的家人


safetyLevel


flickr 的字段,表示安全级别:1 为安全级、2 为辅导级、3 为限制级


contentType


flickr 的字段,表示相册类型:1 为相片、2 为屏幕截图、3 为其他


hidden


flickr 的字段,表示是否隐藏图片


venueName


foursquare 的字段,表示分享位置的名称


venueDescription


foursquare 的字段,表示分享位置的描述


latitude


分享位置的维度


longitude


分享位置的经度


imageUrl


待分享的网络图片


comment


对分享内容的评价。区别于 text,评论一般共应用的用户自己填写,部分平台支持此字段


titleUrl


分享内容标题的链接地址


url


分享内容的 url、在微信和易信中也使用为视频文件地址


address


邮箱地址或者短信电话号码,一般在邮箱或者短信中使用


site


QQ 空间的字段,标记分享应用的名称


siteUrl


QQ 空间的字段,标记分享应用的网页地址


gropuId


VK 的字段,表示图片所属的组 ID。如果不设置此字段,ShareSDK 会将组 ID 设置为 ShareSDK 所在的组


shareType


微信和易信的字段,分享内容的类型: 分别为 Platform.SHARE_TEXT(分享文本), Platform.SHARE_IMAGE(分享图片), Platform.SHARE_WEBPAGE(分享网页,既图文分享), Platform.SHARE_MUSIC(分享音频), Platform.SHARE_VIDEO(分享视频), Platform.SHARE_APPS(分享应用,仅微信支持), Platform.SHARE_FILE(分享文件,仅微信支持) Platform.SHARE_EMOJI(分享表情,仅微信支持)


musicUrl


微信和易信的字段,分享音频时的音频文件网络地址


imageData


微信和易信的字段,各类分享内容中的图片 bitmap 对象,可以替代 imagePath 或者 imageUrl


autdor


有道云笔记的字段,表示分享内容的作者


customFlag


自定义分享标签


上述字段中和本地路径有关的,全部使用“Path”结尾,如 imagePath;和网络路径有关的,使用“Url”结尾,如 imageUrl。本地图片最好使用后缀名,否则 POST 文件时,可能无法正确计算文件的 MIME 值,从而导致发送失败。

一键分享回调(setCallback)

//cn.sharesdk.onekeyshare/** * 一键分享回调 * @param callback  回调结果 */ public void setCallback(PlatformActionListener callback)
复制代码


示例代码


oks.setCallback(new PlatformActionListener() {     @Override      public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {      // 分享成功回调     }         @Override      public void onError(Platform platform, int i, Throwable throwable) {      // 分享失败回调  platform:平台对象, i:表示当前的动作(9表示分享),throwable:异常信息
} @Override public void onCancel(Platform platform, int i) { // 分享取消回调 } });
复制代码

指定平台单独分享回调(setPlatformActionListener)

//cn.sharesdk.framework/** * 单独分享回调 * @param callback  回调结果 */  public void setPlatformActionListener(PlatformActionListener callback)
复制代码


示例代码


qzone.setPlatformActionListener(new PlatformActionListener() {       public void onError(Platform platform, int i, Throwable throwable) {       //失败的回调, platform:平台对象, i:表示当前的动作(9表示分享),throwable:异常信息       }       public void onComplete(Platform platform, int i, HashMap arg2) {       //分享成功的回调         }       public void onCancel(Platform platform, int i) {        //取消分享的回调        }       });
复制代码


用户头像

还未添加个人签名 2019-05-08 加入

还未添加个人简介

评论

发布
暂无评论
ShareSDK Android SDK API_MobTech袤博科技_InfoQ写作社区