目前市面上大大小小的软件,几乎都支持分享的功能,前几天在做的项目中也有此功能,使用的ShareSDK来实现的微信分享功能,下面就跟着我来一步步实现微信分享吧!
ShareSDK介绍:ShareSDK官网,Mob移动开发者服务平台,为全球移动开发者提供社会化分享SDK、手游视频录像SDK、免费手机短信验证码SDK,BigApp掌上社区等服务。
1.在ShareSDK注册个账户,进入创建应用的界面:
点击创建应用按钮
2.输入自己的应用名称,选择开发平台(以Android为例)
3.点击确定,进入后台管理界面,此时已经生成了该应用的App Key和App Secret,这是后面分享必须的。
注:此时在ShareSDK配置已经完成,下面需要到各自分享的平台去申请对应的AppId和AppSecret。
4.进入微信开放平台,点击顶部的管理中心按钮
5.填写应用信息
6.下一步,接着填写信息
这里详细介绍一下签名,此处填写的签名必须和应用发布时的签名保持一致才可以分享,为了保持一致,此处的签名可以这样来产生:
使用命令来生成签名文件,命令如下:keytool -genkey -alias demo.keystore -keyalg RSA -validity 20000 -keystore demo.keystore,cmd命令行直接执行就可以了,至于输入的内容,记住密匙库口令,也就是密码,重复输入两次,输入的过程不会显示! 此时在你执行命令的目录就会生成一个签名文件demo.keystore
next—找到你的签名文件—输入生成签名文件时的密码
上面这个图才是关键,看到Certificate fingerprints下有个MD5,咱们要的就是这个,记住这个,就是微信验证时输入的应用签名
把上面的md5那一串数字和字母输入在上图的应用签名一栏就可以了!!!
7.提交审核就Ok了,耐心等待,说是7天内,一般一两天就审核通过了!
8.过个一两天应用审核通过,在管理中心可以看到应用已经审核通过。
9.点击查看,可进入应用后台管理页面,可以看到,已经生成了我们分享所需要的AppId和AppSecret.
10.下面就是代码实现分享功能了,我们一步步来看,首先看一下工程结构图,在libs目录下导入分享所需要的jar包,在assets目录下,复制ShareSDK.xml,这是分享的配置文件,至于如何获取jar和ShareSDK.xml,请点击:Android快速集成指南。
11.打开ShareSDK.xml文件,输入shareSdk的APPKey,和已经在微信开放平台申请到的APPID和AppSecret。
12.代码实现分享功能,首先在onCreate方法中初始化ShareSDK。
01.
class
=
"hljs java"
>
@Override
02.
protected
void
onCreate(Bundle savedInstanceState)
03.
{
04.
super
.onCreate(savedInstanceState);
05.
setContentView(R.layout.activity_main);
06.
//初始化ShareSDK
07.
ShareSDK.initSDK(MainActivity.
this
);
08.
initView();
09.
}
13.封装分享的方法,微信支持四种分享类型,文本,图片,音乐,网页。
01.
class
=
"hljs java"
>class
=
"hljs java"
>
/**
02.
* 方法名称:xinWeiShare
03.
* 方法描述:微信分享
04.
* @param isWeiXin true为微信 false为微信朋友圈
05.
* @param handler 分享界面回调 不能为空
06.
* @param context 分享界面mContext
07.
* @param type 分享类型 如:Platform.SHARE_TEXT,Platform.SHARE_IMAGE,Platform.SHARE_MUSIC,Platform.SHARE_WEBPAGE
08.
* @param args 分享类型 如Platform.SHARE_TEXT(微信文本类型) 必须传入 两个参数(不能少传,也不能多传) :第一个为标题
09.
* 第二个为分享内容
10.
*
11.
* 分享类型 如Platform.SHARE_IMAGE(微信图片类型) 必须传入 两个参数(不能少传,也不能多传):第一个为标题
12.
* 第二个为分享图片 URL地址 或者 手机文件地址
13.
*
14.
* 分享类型 如Platform.SHARE_MUSIC(微信音乐分享) 必须传入 五个参数(不能少传,也不能多传):第一个为标题
15.
* 第二个为分享内容
16.
* 第三个为分享图片地址 URL地址 或者 手机文件地址
17.
* 第四个为分享音乐地址(必须携带http:// 或者 https://)
18.
* 第五个为分享音乐详细地址(必须携带http:// 或者 https://)
19.
*
20.
* 分享类型 如Platform.SHARE_WEBPAGE(微信网页链接分享) 必须传入四个参数(不能少传,也不能多传): 第一个为标题
21.
* 第二个为分享内容
22.
* 第三个为分享网页图片地址 URL地址 或者 手机文件地址
23.
* 第四个为分享网页的地址 (必须携带http:// 或者 https://)
24.
* 备注:
25.
*/
26.
public
void
weiXinShare(
boolean
isWeiXin, Handler handler, Context mContext,
int
type, String... args)
27.
{
28.
switch
(type)
29.
{
30.
case
Platform.SHARE_TEXT:
31.
if
(
null
!= handler)
32.
{
33.
this
.mHandler = handler;
34.
weixinTxtShare(isWeiXin, mContext, args);
35.
}
36.
//微信文本分享
37.
break
;
38.
case
Platform.SHARE_IMAGE:
39.
//微信图片分享
40.
if
(
null
!= handler)
41.
{
42.
this
.mHandler = handler;
43.
weiXinImgShare(isWeiXin, mContext, args);
44.
}
45.
break
;
46.
case
Platform.SHARE_MUSIC:
47.
//分享音乐
48.
if
(
null
!= handler)
49.
{
50.
this
.mHandler = handler;
51.
weixinMusicShare(isWeiXin, mContext, args);
52.
}
53.
break
;
54.
case
Platform.SHARE_WEBPAGE:
55.
//分享网页
56.
if
(
null
!= handler)
57.
{
58.
this
.mHandler = handler;
59.
weiXinWebShare(isWeiXin, mContext, args);
60.
}
61.
break
;
62.
default
:
63.
break
;
64.
}
65.
}
14.此处测试的是分享网页,分享网页的方法如下:
01.
class
=
"hljs java"
>class
=
"hljs java"
>class
=
"hljs java"
>
/**
02.
* 方法名称:xinweiWebShare
03.
* 方法描述:网页分享
04.
* 备注:
05.
*/
06.
private
void
weiXinWebShare(
boolean
isWeixin, Context mContext, String... args)
07.
{
08.
if
(
null
== mContext || args.length < SHARE_WEB_MIN_LEN)
09.
{
10.
MainApplication.getIns().tip(
'分享失败'
);
11.
return
;
12.
}
13.
else
14.
{
15.
this
.context = mContext;
16.
for
(
int
i =
0
; i < args.length; i++)
17.
{
18.
String str = args[i];
19.
if
(TextUtils.isEmpty(str) && i !=
2
)
20.
{
21.
MainApplication.getIns().tip(
'分享失败'
);
22.
return
;
23.
}
24.
}
25.
String title = args[
0
];
26.
String text = args[
1
];
27.
String image = args[
2
];
28.
String url = args[
3
];
29.
WechatHelper.ShareParams sp =
null
;
30.
if
(isWeixin)
31.
{
32.
sp =
new
Wechat.ShareParams();
33.
}
34.
else
35.
{
36.
sp =
new
WechatMoments.ShareParams();
37.
}
38.
sp.title = title;
39.
40.
if
(TextUtils.isEmpty(image))
41.
{
42.
sp.imageData = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.logo_mingdao)).getBitmap();
43.
}
44.
else
if
(image.contains(
'http://'
) || image.contains(
'https://'
))
45.
{
46.
sp.imageUrl = image;
47.
}
48.
sp.text = text;
49.
if
(url.contains(
'http://'
) || url.contains(
'https://'
))
50.
{
51.
sp.url = url;
52.
}
53.
sp.setShareType(Platform.SHARE_WEBPAGE);
54.
Platform plat =
null
;
55.
if
(isWeixin)
56.
{
57.
plat = ShareSDK.getPlatform(Wechat.NAME);
58.
}
59.
else
60.
{
61.
plat = ShareSDK.getPlatform(WechatMoments.NAME);
62.
}
63.
plat.setPlatformActionListener(listener);
64.
plat.share(sp);
65.
}
66.
}
15.具体的分享调用
01.
class
=
"hljs java"
>class
=
"hljs java"
>class
=
"hljs java"
>class
=
"hljs java"
>
/**
02.
* 方法名称:weixinShare
03.
* 方法描述:微信分享
04.
*/
05.
private
void
weixinShare()
06.
{
07.
String shareContentTxt =
'我是来自Android客户端分享实例Demo的数据'
;
08.
String sharklink =
'http://user.qzone.qq.com/1039163285/infocenter?ptsig=*Sb6sER-9smBstwyL28cYg2h0D99pYGcPvoySuzkGyc_'
;
09.
ShareUtil.getInstance().weiXinShare(
true
, mHandler,
this
, Platform.SHARE_WEBPAGE,
'Note客户端分享'
, shareContentTxt,
''
, sharklink);
10.
}
11.
12.
/**
13.
* 方法名称:weixinQuanShare
14.
* 方法描述:微信朋友圈分享
15.
*/
16.
private
void
weixinQuanShare()
17.
{
18.
String shareContentTxt =
'我是来自Android客户端分享实例Demo的数据,如果您看到此条数据,可以选择忽略它!'
;
19.
String sharklink =
'http://user.qzone.<;a href="http://www.it165.net/qq/" target="_blank" class="keylink">qq.com/1039163285/infocenter?ptsig=*Sb6sER-9smBstwyL28cYg2h0D99pYGcPvoySuzkGyc_'
;
20.
ShareUtil.getInstance().weiXinShare(
false
, mHandler,
this
, Platform.SHARE_WEBPAGE, shareContentTxt,
'Note客户端分享'
,
''
, sharklink);
21.
}
16.分享完成,测试
分享成功