一键分享
主要注意的就是
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);