Android(安卓)Mob ShareSDK分享遇到的坑
16lz
2022-07-25
一键分享
主要注意的就是
public void shareMsg(String name,String title,String url) { Bitmap logo = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); OnekeyShare oks = new OnekeyShare(); //隐藏QQ平台// oks.addHiddenPlatform(QQ.NAME); //关闭sso授权 oks.disableSSOWhenAuthorize(); // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用 oks.setTitle(name); // titleUrl是标题的网络链接,仅在人人网和QQ空间使用 oks.setTitleUrl(url); // text是分享文本,所有平台都需要这个字段 oks.setText(title); // imagePath是图片的本地路径,Linked-In以外的平台都支持此参数, // 使用 imagePath 必须保证SDcard下面存在此张图片 //imagePath,imageUrl 必须保留一个,否则微信不能分享,或者分享过去的图片都是应用的 logo// oks.setImageUrl(Urls.BASE_URL + entity.pic); oks.setImageData(logo); // url仅在微信(包括好友和朋友圈)中使用 oks.setUrl(url); // comment是我对这条分享的评论,仅在人人网和QQ空间使用 oks.setComment(title); // site是分享此内容的网站名称,仅在QQ空间使用 oks.setSite(name); // siteUrl是分享此内容的网站地址,仅在QQ空间使用 oks.setSiteUrl(url); //去除分享正在后台的提示 oks.setDisappearShareToast(true); oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() { @Override public void onShare(Platform platform, cn.sharesdk.framework.Platform.ShareParams paramsToShare) { if (Wechat.NAME.equals(platform.getName())) { paramsToShare.setShareType(Platform.SHARE_WEBPAGE); paramsToShare.setTitle(name); paramsToShare.setTitleUrl(url); paramsToShare.setText(title); paramsToShare.setUrl(url); paramsToShare.setImageData(logo); } if (QQ.NAME.equals(platform.getName())) { paramsToShare.setTitle(name); paramsToShare.setTitleUrl(url); paramsToShare.setText(title); paramsToShare.setUrl(url); paramsToShare.setImageData(logo); } } }); oks.setCallback(new PlatformActionListener() { @Override public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) { // TODO 分享成功后的操作或者提示 Log.d("share","onComplete"); } @Override public void onError(Platform platform, int i, Throwable throwable) { // TODO 失败,打印throwable为错误码 Log.d("share","onError"); } @Override public void onCancel(Platform platform, int i) { // TODO 分享取消操作 Log.d("share","onCancel"); } }); //启动分享GUI oks.show(MobSDK.getContext()); }
指定平台分享
private void sharePlatform(String name,String titleContent,String url){ Bitmap logo = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); Platform.ShareParams sp = new Platform.ShareParams(); sp.setTitle(name); sp.setTitleUrl(url); // 标题的超链接 sp.setText(titleContent);// sp.setImageUrl("http://www.someserver.com/测试图片网络地址.jpg"); sp.setImageData(logo); sp.setSite(name); sp.setShareType(Platform.SHARE_WEBPAGE); sp.setUrl(url); // 标题的超链接 sp.setSiteUrl(url); Platform qzone = ShareSDK.getPlatform (Wechat.NAME);// 设置分享事件回调(注:回调放在不能保证在主线程调用,不可以在里面直接处理UI操作) qzone.setPlatformActionListener (new PlatformActionListener() { public void onError(Platform arg0, int arg1, Throwable arg2) { //失败的回调,arg:平台对象,arg1:表示当前的动作,arg2:异常信息 Log.d("share","onError"); } public void onComplete(Platform arg0, int arg1, HashMap arg2) { //分享成功的回调 Log.d("share","onComplete"); } public void onCancel(Platform arg0, int arg1) { //取消分享的回调 Log.d("share","onCancel"); } });// 执行图文分享 qzone.share(sp); }
注意事项
指定平台分享要注意分享的Type类型,比如这里使用的是Platform.SHARE_WEBPAGE类型
sp.setUrl(url);就不能缺少
sp.setShareType(Platform.SHARE_WEBPAGE);
//imagePath,imageUrl 必须保留一个,否则微信不能分享,或者分享过去的图片都是应用的 logo
其次分享微信的时候主要签名这些基本要求要对应上
//去除分享正在后台的提示
oks.setDisappearShareToast(true);
//隐藏QQ平台
// oks.addHiddenPlatform(QQ.NAME);
更多相关文章
- 箭头函数的基础使用
- NPM 和webpack 的基础使用
- Python list sort方法的具体使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
- android 使用html5作布局文件: webview跟javascript交互
- Android(安卓)Resource介绍和使用
- "Failed to fetch URL https://dl-ssl.google.com/android/repos
- 使用NetBeans搭建Android开发环境
- Android平台上优秀的开源项目