天天看點

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

【前言】

如今的app當中,幾乎都包含了社會化分享的功能,來兩張圖see 一 see:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

好在這種分享功能已經有第三方平台幫我們做好了,我們直接調用其sdk即可。市面上做社會化分享平台的比較好平台的有:mob等。

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

怎麼樣?光看這個網站的首頁就碉堡了吧?好了不廢話,進入正題。

開發環境:

ide版本:android studio 1.2

實體機版本:win7旗艦版(64位)

一、擷取sdk并解壓:

打開網站首頁後,上圖中的箭頭處正是我們所需要的sharesdk。那我們就先将sdk下載下傳下來吧。

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖中,點選箭頭處,進行下載下傳。

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖中的箭頭處所示,我們需要的是android的sdk,是以将其下載下傳下來。

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖中,單機箭頭處正式下載下傳,彈出如下界面:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖中,選擇我們所需要的社交平台進行下載下傳吧,這裡面,我選擇:新浪微網誌、微信、qq、qq空間。

下載下傳完了之後,解壓,就是下面這個樣子:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

sharesdk在“sharesdk for android”目錄下,此目錄中的“libs”包含了“mainlibs”檔案夾(核心庫)和“onekeyshare”檔案夾(快捷分享庫)。截圖如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

“sharesdk for android services”包含sharesdk已經釋出的“插件服務”,暫時隻提供了“評論與贊”服務,我們不需要這個哈。

二、在sharesdk官網進行注冊:

在官網新增賬號獲得sharesdk的appkey:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

然後選擇應用名稱和平台:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

應用建立成功後,效果如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖中的app key要記住,因為我們稍後要用。

單擊紅框部分的“應用資訊”,可以添加一些資訊,這些資訊可有可無哈。

二、在各大社交平台注冊:

如果你想分享到新浪微網誌,就必須在新浪開放平台上将這個app注冊一下,不然新浪是不會無緣無故讓你分享的;分享到微信和qq的道理是一樣的。

參考連結:

1、新浪開放平台注冊:

圖文操作如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖中,填好應用名稱,選好“應用平台”(當然也可以同時勾選"iphone",這樣的話,android平台和ios平台就可以共用同一個appid了),然後單擊“建立”即可。

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖中,單擊左側的“基本資訊”,可以看到新浪微網誌的app key、app secret(紅框部分),這個資訊稍後需要填到我們工程中的sharesdk.xml中對應的<sinaweibo>标簽中去。

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖中,單擊左側的“進階資訊”,然後填寫紅框部分的網址,填的這個網址稍後需要填到我們工程中的sharesdk.xml中對應的<sinaweibo>标簽的redirecturl屬性中去。

,不然分享的時候很可能會報下面的錯誤:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

這個錯誤可以參考下面這個連結:

至于微信開放平台、qq空間開放品台的申請是類似的,隻不過微信開放平台的稽核是需要時間的。

另外需要說明的是:

  在新浪微網誌和qq的開放平台注冊的應用,即使稽核不通過,也可以得到appkey進行分享;而微信開放平台申請的應用需要稽核成功之後才能得到appkey進行分享(我自己是等了一天的時間才得到了app稽核通過的通知)

2、微信開放平台注冊:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

核心是要填“應用簽名”,也就是下面這張圖:(簽名工具的apk安裝包見附件)

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

3、騰訊開放平台的注冊:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

四、各種配置:

1、導入sdk到工程檔案:

打開android studio,先建立一個名為sharedemo的project,然後開始導入sdk。

建立一個library形式的module,删掉這個module中src/main目錄裡面的所有檔案(包括删掉java、res、androidmanifest.xml)

複制第三方庫的androidmainfest.xml、res、src檔案(夾)到庫目錄的src/main目錄中

将src/main目錄下的src目錄重命名(shift+f6)為java

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

我們将上圖中的兩個工程檔案建立為兩個library module:sharesdk和onekeyshare,記得要将下面的這個檔案夾中的東西也要拷到mainlibs這個module的libs檔案夾下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

然後,需要注意的是,onekeyshare這個module是依賴于sharesdk這個module;而app這個module是依賴于onekeyshare這個module。

2、添加應用資訊:

先在app這個module(即我們這個項目的module)下建立一個assets檔案夾(即第三方資産目錄),操作如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

然後,我們将上圖中的sharesdk.xml檔案複制到assets目錄下。

緊接着開始修改sharesdk.xml檔案中的代碼。這裡以新浪微網誌為例:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

代碼解釋:

    02行:還記得之前說過appkey有用嗎?這裡就派上用場了,填上去就行了。

    08行:需要先事先在新浪微網誌的開發者平台注冊得到appkey。也就是上面第三段中提到的内容。

    12行:如果不想用這個分享平台,可以将其設定為false。

總結:

sharesdk的每一個平台都具備sortid、id、enable字段,除此之外的字段(如新浪微網誌的appkey、appsecret、redirecturl、sharebyappclient等字段)需要到目标平台上注冊應用以後得到,請正确填寫這些字段的資料,否則sharesdk無法完成授權,則後續的其它操作也将無法執行。

3、配置androidmanifest.xml:

(1)添加如下權限:(和application節點并列)

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

(2)在application節點下注冊下面的activity:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

注意: mobuishell的路徑是固定的,一定要在“cn.sharesdk.framework”下,因為它在share-core中。

之後,需要對上面的代碼進行以下修改:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖中,将紅框部分的數字改成在騰訊開放平台申請到的appid即可。

如果項目內建了微信,還需要添加以下wxentryactivity,不然的話,mob背景無法做微信的分享統計:(在工程的包下建立wxapi目錄再放置wxentryactivity)

wxentryactivity.java的代碼如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

同時,在清單檔案中進行聲明:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

如果項目繼承了易信,方法類似,這裡就不貼出來了,現在誰還用易信啊,哈哈哈···

4、添加代碼:

內建sharesdk至少需要在兩個位置添加代碼,包括:

(1)在項目的入口activity,在其oncreate方法中插入下面的代碼進行初始化:(這個方法越早調用越好)

如果不在所有的sharesdk的操作之前調用這行代碼,就會抛出空指針異常。

(2)在項目出口activity的ondestroy方法中第一行插入下面的代碼:

 上方這行代碼會結束sharesdk的統計功能并釋放資源。如果這行代碼沒有被調用,那麼“應用啟動次數”将會不準确,因為應用可能從來沒有被關閉過(注:這一行代碼我還是沒用到,不知道會造成什麼實質性的後果)。

注意:initsdk是可以重複調用的,其實sharesdk建議在不确定的時候調用這個方法來保證sharesdk被正确初始化。而stopsdk一旦被調用了,就必須重新調用initsdk才能使用sharesdk的功能,否則會出現空指針異常。

在代碼中調用此方法,即可打開一鍵分享功能進行分享:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上面的這些代碼是官方給的,實際項目中可以放在按鈕的點選事件中,根據需要去填寫。

    14行:settext是需要分享的文本内容

    16行:setimagepath是需要分享的本地圖檔。(如果是在真機當中,需要通過api去拿sd卡的路徑,即environment.getexternalstoragedirectory()這個api)

五、正式開始寫代碼:

(1)activity_main.xml布局檔案:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

其實就是加了個button按鈕,用做分享的事件觸發。

(2)sharesdk.xml中和新浪微網誌、微信、qq有關的配置:

新浪微網誌:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

02行和03行的appkey和appsecret要換成你自己在新浪開放平台注冊的資訊。

06行:redirecturl裡面的網址要改成可用的url位址,并且與新浪開放平台的授權回調頁的網址一緻,也就是下面這個:(在第三段中已經強調過了)

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

07行:如果設定為true,那就會用新浪微網誌的app來進行分享操作;如果你沒有安裝新浪微網誌的app,很可能會導緻分享失敗。如果設定為false,那就會用網頁版的新浪微網誌進行分享。

微信和qq的配置資訊差不多,就不贅述了。

(3)mainactivity.java:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

 第39行中,如果不想用本地的圖檔,而是采用分享網絡的圖檔,可以将這一行去掉,改為第42行。

提示:如果imagepath和imageurl同時存在,imageurl将被忽略。

六、運作效果:

1、分享到新浪微網誌:(不采用用戶端進行分享的方式)

運作效果如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

 第一次分享時,系統會彈出頁面讓你填寫你自己的新浪微網誌賬号,我第一次運作的時候已經填寫過了。

現在打開新浪微網誌,分享成功了:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

什麼?你覺得分享的圖檔太小了不夠刺激?那點開大圖爽一下吧:(确實是分享成功了滴)

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

settext屬性對應的是:“我是分享文本,啦啦啦~”

setimagepath屬性對應的是需要分享的圖檔,也就是上圖中的大美女。

2、分享到新浪微網誌:(采用用戶端進行分享的方式)

運作之後,進行分享操作的界面如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

分享成功之後的效果如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖的左下角顯示的是說“來自未通過稽核應用”,但有時候會顯示手機的名字,很奇怪吧?咨詢了一下官方客服(官方客服的解答太耐心了,感激涕零),情況是這樣的:

如果不用用戶端進行分享(即sharebyappclient="false"):

  app在新浪開放平台沒通過稽核,就會顯示“未通過稽核應用”

  app在新浪開放平台通過了稽核,就會顯示具體的app的名字

如果用用戶端進行分享(即sharebyappclient="true"):

  app在新浪開放平台沒通過稽核,就會顯示“未通過稽核應用”或者手機型号

  app在新浪開放平台通過了稽核,顯示的是手機型号。效果如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

3、分享到微信:

我這裡采用的是不繞過稽核的方式來進行分享(即sharesdk.xml中關于微信的部分中,bypassapproval="false")。一般也是采取這種方式進行分享的吧。到底要不要繞過,看官網部落格便知:

提示:記得要将生成簽名的apk安裝到手機,不然無法分享到微信哦(好吧,仔細看微信開放平台的注冊流程就行了)。

3.1  分享到微信好友:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

留在微信後,效果如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

3.2 分享到微信朋友圈:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

4、分享到qq、qq空間:(和分享到微信的過程和界面一緻)

運作效果:

4.1、分享到qq好友:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

4.2、分享到qq空間:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

動态效果圖如下:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

如果你還需要做一些細微的調整,那就需要多看官方的東西了,這裡貼出兩個連結:

【工程檔案】

<a href="http://download.csdn.net/detail/smyhvae/8818779" target="_blank">2015-06-18-sharesdk做分享功能.rar</a>

七、在onekeyshare這個module中對分享界面進行略微修改:

由于我們使用的是onekeyshare一鍵分享功能,于是分享界面在onekeyshare這個module中已經定制好了,現在可以進行略微的修改:

1、将每行多個分享按鈕改為每行兩個分享按鈕:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

這樣的話,每排就是固定為兩個分享按鈕:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

2、修改分享界面的背景:

可以在下面這個位置加背景:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

上圖中, 添加紅框部分的代碼即可。

八、完全自定義分享界面:

現在我想自定義成下面的這樣的界面:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

此時,由于我們是完全自定義界面,是以我們在內建的時候不需要內建onekeyshare子產品(快捷分享)。也就是說,我們隻需要讓app這個module依賴于sharesdk這個module就行了。

至于自定義的分享按鈕的布局,我們需要一個gridview

代碼實作:

(1)share_item.xml:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

(2)share_dialog.xml:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

其實就是一個gridview和一個取消按鈕。

為了達到ui上的效果,上面這兩個布局檔案的padding和margin我調了兩個小時。唉···

(3)sharedialog.java:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

第31行是設定對話框彈出的位置。

(4)mainactivity.java:

在Android Studio中使用shareSDK進行社會化分享(圖文教程)
在Android Studio中使用shareSDK進行社會化分享(圖文教程)

如果是分享到微信和朋友圈,那麼第81行和第97行一定不能少哦,不然分享失敗。

在Android Studio中使用shareSDK進行社會化分享(圖文教程)

繼續閱讀