可以看到的是,现在的app,几乎没有不带分享这个功能的。这里就来总结一下自己前前后后用过的实现分享的方法。
一、ShareSDk
第一步
申请appkey———-登录官网http://www.mob.com/,设置应用名即可,结果如下:
第二步、下载sdk
解压后,目录如下:
第三步、在studio中配置
将ShareSDK for Android\Libs\MainLibs目录下的libs中 和 res中的内容直接拷贝到studio中对应的目录下,同样的,ShareSDK for Android\Libs\OneKeyShare目录下的src 和 res需要拷贝到studio中。当然了,还需要的是将ShareSDK for Android\Res下的ShareSDK.xml拷贝到studio的assets目录下
第五步、需要在各个平台申请appkey(有些平台的appkey直接使用sharesdk中提供的可以实现分享,但是为了保险起见,避免在某些情况下出错,还是要替换成自己实际申请到的appkey)
第六步、使用
在代码中调用showShare()方法:
private void showShare() {
OnekeyShare oks = new OnekeyShare();
//关闭sso授权
oks.disableSSOWhenAuthorize();
// title标题,印象笔记、邮箱、信息、微信、人人网、QQ和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");
// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数
//oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片
// url仅在微信(包括好友和朋友圈)中使用
oks.setUrl("http://sharesdk.cn");
// comment是我对这条分享的评论,仅在人人网和QQ空间使用
oks.setComment("我是测试评论文本");
// site是分享此内容的网站名称,仅在QQ空间使用
oks.setSite("ShareSDK");
// siteUrl是分享此内容的网站地址,仅在QQ空间使用
oks.setSiteUrl("http://sharesdk.cn");
// 启动分享GUI
oks.show(this);
}
OK,ShareSDK的使用就是这样了。
二、友盟
第一步、申请UMENG_APPKEY
第二步、下载sdk,可以选择需要的分享平台
第三步、去各个分享平台申请appkey
第四步、参考官方提供的as项目:social_sdk_example_as。将各个平台对应的appkey配置到代码中
//各个平台的配置,建议放在全局Application或者程序入口
{
PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
//豆瓣RENREN平台目前只能在服务器端配置
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
PlatformConfig.setAlipay("2015111700822536");
PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
PlatformConfig.setPinterest("1439206");
PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f");
PlatformConfig.setDing("dingoalmlnohc0wggfedpk");
PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J");
PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a");
}
第五步、具体使用,参考上面的as项目即可。
OK,使用友盟分享就是这样了。
三、非集成化的分享方法
这种方法就是使用各个平台自己的api来实现分享,适合分享平台较少的情况。
上一段代码你就明白是怎么回事了
/**
* Tencent类的shareToQQ函数可直接调用,不用用户授权(使用手机QQ当前的登录态)。调用将打开分享的界面,用户选择好友、群或讨论组之后,点击确定即可完成分享,并进入与该好友进行对话的窗口。
*/
/**
* @param isToQQ true QQ
* false QZONE
*/
private void shareToTencent(boolean isToQQ) {
// title对应的是QQShare.SHARE_TO_QQ_TITLE,这是QQ官方提供的,其他的参数类似
Bundle bundle = new Bundle();
bundle.putString("targetUrl", mShareURL);
bundle.putString("title", mShareTitle);
bundle.putString("summary", mShareContent);
if (isToQQ) {
bundle.putString("imageUrl", mShareImageUrl);
mTencent.shareToQQ(this, bundle, mTencentCallback);
// 刚开始老是缩略图显示不了,原来QQ分享有本地图片和在线图片之分,一定要只选其一
} else {
ArrayList<String> imageList = new ArrayList<>(1);
imageList.add(mShareImageUrl);
bundle.putStringArrayList("imageUrl", imageList);
mTencent.shareToQzone(this, bundle, mTencentCallback);
// 刚开始点击分享老是没反应,后来才发现Qzone分享必须设置缩略图才行
}
}
上面这个就是通过腾讯官方api实现的分享到qq 和 qq空间的逻辑代码。类似的,可以去实现分享到各个平台的功能。但是如果平台太多的话,代码量就大了,所以如果分享平台多的话,还是使用集成化的分享方法比较方便,就是前面两种方法。