Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中使用ShareSDK功能學習

Android中使用ShareSDK功能學習

編輯:關於Android編程

前言:由於最近做了個項目用到了社會化分享的功能,之前從來沒有碰到過這類功能,然後自己就一邊查看資料,一邊在項目中加入,慢慢摸索,這邊文章算是自己對ShareSDK的學習筆記,有錯誤的地方,歡迎大家給予提出意見。

一、基本的步驟

一、首先,我們在mob官網上獲取App Key和App Secret。

我就簡略的上傳一些圖了。這邊有一個官方提供的鏈接大家可以看看–http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D1

1、在登錄,或者注冊填寫完一些基本的信息之後,點擊右上角進入後台。

 

這裡寫圖片描述

 

2、此時注意,不同SDK後台創建應用的App Key和App Secret是不通用的,請分別創建。

 

這裡寫圖片描述

 

3、然後就會看到你的App Key和App Secret,這個後面是要使用的。

 

這裡寫圖片描述

 

4、如圖可以添加應用。

 

這裡寫圖片描述

 

二、然後下載mob上的Share Sdk,集成到自己的應用中去。

我也是簡略上傳一些圖。這邊也是官網上的鏈接,大家可以看看–http://wiki.mob.com/Android_%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/

1、進入下載Android SDK界面,點擊下載。

 

這裡寫圖片描述

 

2、然後下載你想要用的平台,不要用的可以取消勾選。(本人是全部選擇的,因為到時候可以隱藏一些不要用的,但是應用包會變大)。

 

這裡寫圖片描述

 

3、解壓你下載下來的包,我們會看到一些文件,可以先看看是哪些,猜測一下有哪些作用。

 

這裡寫圖片描述

 

特別是這兩個包裡的文件。

 

這裡寫圖片描述

 

三、再然後,我們在社會化分享平台上獲取App Key和App Secret。

我們想在其他平台上分享東西,難道不要在其他平台上面做點什麼嗎!?那肯定是要驗證一些東西了,你懂的,我們再做一些必要的准備。

這裡我就介紹騰訊和微信這兩個開發者平台獲取App Key和App Secret。

1、騰訊開發者平台獲取。http://open.qq.com/

點擊移動應用

 

這裡寫圖片描述

 

創建應用,填寫一些基本的信息。獲取到App Key和App ID。

2、微信開發者平台獲取。https://open.weixin.qq.com/

創建移動應用,填寫一些基本的信息,微信上面是需要審核的,不過很快就能結束。獲取到App ID和App Secret。

二、開始進入代碼階段

一些常用的信息都獲取結束了,我們來總結一下,主要有mob,qq,微信的App Key和App Secret(App Id)。同樣,其他平台上的分享,也可以參考官網上的資料。

1、打開Android Studio,新建一個項目,開始導入SDK。

這裡建議采用新建Library module的方式來導入SDK。這裡面我們就不用復制jar包的方式了,因為jar包不方便改源碼。

2、導入SDK

新建一個module形式的第三方library的通用步驟是:

①新建一個library形式的module,刪掉這個module中src/main目錄裡面的所有文件(包括刪掉java、res、AndroidManifest.xml)

 

這裡寫圖片描述

 

 

這裡寫圖片描述

 

②復制第三方庫的AndroidMainfest.xml、res、src文件(夾)到庫目錄的src/main目錄中

③將src/main目錄下的src目錄重命名(Shift+F6)為java

我們將上圖中的兩個工程文件新建為兩個Library module:ShareSDK和OneKeyShare,記得要將下面的這個文件夾中的東西也要拷到MainLibs這個module的libs文件夾下:

 

這裡寫圖片描述

 

然後,需要注意的是,OneKeyShare這個module是依賴於ShareSDK這個module;而app這個module是依賴於OneKeyShare這個module。

 

這裡寫圖片描述

 

 

這裡寫圖片描述

 

3、添加應用信息

先在app這個module(即我們這個項目的module)下新建一個assets文件夾(即第三方資產目錄),操作如下:

 

這裡寫圖片描述

 

 

這裡寫圖片描述

 

然後,我們將上圖中的ShareSDK.xml文件復制到assets目錄下。

 

這裡寫圖片描述

 

這裡有一個別人博客新浪微博的例子,我們可以先看一下。

 

這裡寫圖片描述

 

代碼解釋:

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

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

12行:如果不想用這個分享平台,可以將其設置為false。 總結: ShareSDK的每一個平台都具備SortId、Id、Enable字段,除此之外的字段(如新浪微博的AppKey、AppSecret、RedirectUrl、ShareByAppClient等字段)需要到目標平台上注冊應用以後得到,請正確填寫這些字段的數據,否則ShareSDK無法完成授權,則後續的其它操作也將無法執行。

接著我們以QQ為例,修改其中的代碼。

將Enable="false"設為這個,則在使用分享時,不會顯示這個分享模塊。

首先,填入shared sdk的app key,接著我們填入QQ的id和key。

4、配置AndroidManifest.xml:

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

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

注意: MobUIShell的路徑是固定的,一定要在“cn.sharesdk.framework”下,因為它在Share-Core中。之後,需要對上面的代碼進行以下修改:

 

這裡寫圖片描述

 

上圖中,藍字處需要修改成在騰訊開放平台申請到的AppId。

如果項目集成了微信,還需要添加以下WXEntryActivity,不然的話,mob後台無法做微信的分享統計:(在工程的包下新建wxapi目錄再放置WXEntryActivity)

WXEntryActivity.java的代碼如下:

/*

* 官網地站:http://www.mob.com

* 技術支持QQ: 4006852216

* 官方微信:ShareSDK (如果發布新版本的話,我們將會第一時間通過微信將版本更新內容推送給您。如果使用過程中有任何問題,也可以通過微信與我們取得聯系,我們將會在24小時內給予回復)

*

* Copyright (c) 2013年 mob.com. All rights reserved.

*/

package com.smyhvae.sharedemo.wxapi;

import android.content.Intent;

import android.widget.Toast;

import cn.sharesdk.wechat.utils.WXAppExtendObject;

import cn.sharesdk.wechat.utils.WXMediaMessage;

import cn.sharesdk.wechat.utils.WechatHandlerActivity;

/** 微信客戶端回調activity示例 */

public class WXEntryActivity extends WechatHandlerActivity {

/**

* 處理微信發出的向第三方應用請求app message

*

* 在微信客戶端中的聊天頁面有“添加工具”,可以將本應用的圖標添加到其中 * 此後點擊圖標,下面的代碼會被執行。Demo僅僅只是打開自己而已,但你可 * 做點其他的事情,包括根本不打開任何頁面 */ public void onGetMessageFromWXReq(WXMediaMessage msg) { Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName()); startActivity(iLaunchMyself); } /** * 處理微信向第三方應用發起的消息 *

* 此處用來接收從微信發送過來的消息,比方說本demo在wechatpage裡面分享 * 應用時可以不分享應用文件,而分享一段應用的自定義信息。接受方的微信 * 客戶端會通過這個方法,將這個信息發送回接收方手機上的本demo中,當作 * 回調。 *

* 本Demo只是將信息展示出來,但你可做點其他的事情,而不僅僅只是Toast */ public void onShowMessageFromWXReq(WXMediaMessage msg) { if (msg != null && msg.mediaObject != null && (msg.mediaObject instanceof WXAppExtendObject)) { WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject; Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show(); } } }

同時,在清單文件中進行聲明:

5、添加代碼:

集成ShareSDK至少需要在兩個位置添加代碼,包括:

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

ShareSDK.initSDK(this);

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

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

ShareSDK.stopSDK(this);

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

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

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

private void showShare() {

ShareSDK.initSDK(this);

OnekeyShare oks = new OnekeyShare();

//關閉sso授權

oks.disableSSOWhenAuthorize();

// 分享時Notification的圖標和文字 2.5.9以後的版本不調用此方法

//oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));

// title標題,印象筆記、郵箱、信息、微信、人人網和QQ空間使用

oks.setTitle(getString(R.string.share));

// titleUrl是標題的網絡鏈接,僅在人人網和QQ空間使用

oks.setTitleUrl("http://sharesdk.cn");

// text是分享文本,所有平台都需要這個字段

oks.setText("我是分享文本,啦啦啦~");

// imagePath是圖片的本地路徑,Linked-In以外的平台都支持此參數

oks.setImagePath("/sdcard/test.jpg");//確保SDcard下面存在此張圖片

// url僅在微信(包括好友和朋友圈)中使用

oks.setUrl("http://sharesdk.cn");

// comment是我對這條分享的評論,僅在人人網和QQ空間使用

oks.setComment("我是測試評論文本");

// site是分享此內容的網站名稱,僅在QQ空間使用

oks.setSite(getString(R.string.app_name));

// siteUrl是分享此內容的網站地址,僅在QQ空間使用

oks.setSiteUrl("http://sharesdk.cn");

// 啟動分享GUI

oks.show(this);

}

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

代碼解釋:

14行:setText是需要分享的文本內容

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

6、在onekeyshare這個Module中對分享界面進行略微修改

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

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

 

這裡寫圖片描述

 

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

 

這裡寫圖片描述

 

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

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

 

這裡寫圖片描述

 

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

注意:

需要注意的是在給QQ好友和QQ群分享信息時:需要把

oks.setImagePath("/sdcard/test.jpg");//確保SDcard下面存在此張圖片

去掉或者換成oks.setImageUrl(),不然會出現錯誤。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved