本文轉載自: http://www.it165.net/pro/html/201508/50793.html
(只作轉載, 不代表本站和博主同意文中觀點或證實文中信息)
目前市面上大大小小的軟件,幾乎都支持分享的功能,前幾天在做的項目中也有此功能,使用的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
右鍵工程–Export
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.
<code
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.
}</code>
13.封裝分享的方法,微信支持四種分享類型,文本,圖片,音樂,網頁。
01.
<code
class
=
"hljs java"
><code
class
=
"hljs java"
>
/**
02.
* 方法名稱:xinWeiShare
03.
* <p>方法描述:微信分享
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地址 或者 手機文件地址
19.
*
20.
* 分享類型 如Platform.SHARE_WEBPAGE(微信網頁鏈接分享) 必須傳入四個參數(不能少傳,也不能多傳): 第一個為標題
21.
* 第二個為分享內容
22.
* 第三個為分享網頁圖片地址 URL地址 或者 手機文件地址
24.
* <p>備注:
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.
}</code></code>
14.此處測試的是分享網頁,分享網頁的方法如下:
01.
<code
class
=
"hljs java"
><code
class
=
"hljs java"
><code
class
=
"hljs java"
>
/**
02.
* 方法名稱:xinweiWebShare
03.
* <p>方法描述:網頁分享
04.
* <p>備注:
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.
}
45.
{
46.
sp.imageUrl = image;
47.
}
48.
sp.text = text;
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.
}</code></code></code>
15.具體的分享調用
01.
<code
class
=
"hljs java"
><code
class
=
"hljs java"
><code
class
=
"hljs java"
><code
class
=
"hljs java"
>
/**
02.
* 方法名稱:weixinShare
03.
* 方法描述:微信分享
04.
*/
05.
private
void
weixinShare()
06.
{
07.
String shareContentTxt =
'我是來自<a href="http://www.it165.net/pro/ydad/" target="_blank" class="keylink">Android</a>客戶端分享實例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 =
'我是來自<a href="http://www.it165.net/pro/ydad/" target="_blank" class="keylink">Android</a>客戶端分享實例Demo的數據,如果您看到此條數據,可以選擇忽略它!'
;
19.
String sharklink =
'http://user.qzone.<;a href="http://www.it165.net/qq/" target="_blank" class="keylink">qq</a>.com/1039163285/infocenter?ptsig=*Sb6sER-9smBstwyL28cYg2h0D99pYGcPvoySuzkGyc_'
;
20.
ShareUtil.getInstance().weiXinShare(
false
, mHandler,
this
, Platform.SHARE_WEBPAGE, shareContentTxt,
'Note客戶端分享'
,
''
, sharklink);
21.
}</code></code></code></code>
16.分享完成,測試
分享成功