第一步 :獲取sharesdk
為了集成sharesdk,您首先需要到sharesdk官方網站注冊并且創建應用,獲得sharesdk的appkey,然后到sdk的下載頁面下載sdk的壓縮包,解壓以后可以得到如下圖的目錄結構:
sharesdk在“sharesdk for android”目錄下,此目錄中的“libs”包含“mainlibs”和“onekeyshare” 分別是sharesdk的核心庫和“快捷分享”的源碼庫,說明文檔也在“sharesdk for android”目錄下,集成sharesdk前請務必仔細閱讀。 “sharesdk for android apidoc”包含mainlibs和onekeyshare的javadoc,供開發者開發時查閱。 “sharesdk for android sample”包含sharesdk的功能演示代碼和apk文件,sample源碼的javadoc在中。 “sharesdk for android services”包含sharesdk已經發布的“插件服務”,暫時我們只提供了“評論與贊”服務,壓縮包中已經提供了此插件服務的依賴庫、示例代碼、javadoc和apk文件。
第二步:導入sharesdk
sharesdk集成方式:
1、直接復制jar包到目標項目libs目錄
直接復制jar和資源的方式,可以參考sharesdk的sample項目。 使用復制jar的方法,需要除了復制mainlibs/libs中的jar外,還需要復制mainlibs/res中圖片和strings,否則會出現授權時找不到資源的問題。 而且如果您的項目也集成了快捷分享,還需要復制onekeyshare/src中的源碼、onekeyshare/res中的資源,如果你的項目里沒有android-support-v4的jar需要把onekeyshare/libs下的android-support-v4的jar到您的項目中。
2、快速生成項目
由于直接復制jar包和資源的集成方式比較麻煩,sharesdk提供了快速集成的程序,在windows下可以直接雙擊執行,完成以后可以通過復制目標目錄中的文件到您項目中覆蓋就行了。 極大簡化了“直接復制jar和資源”這種集成方式的操作步驟。 對于你的項目是剛開發或者想寫一個demo測試sharesdk功能,可以使用這種方法快速集成
第三步:添加應用信息
有三種方式
第一種:在sharesdk的應用管理后臺中配置,使用此方法需要調用sharesdk.initsdk(context,你的應用在sharesdk注冊時返回的appkey)方法進行初始化,如果以后更改了注冊信息可以直接從網上更改,而不用重新發布新版本進行更新。(優先級最高)。
第二種:通過代碼配置“setplatformdevinfo(string, hashmap<string, object>)”方法,使用此方法需要調用sharesdk.init(context,你的應用在sharesdk注冊時返回的appkey)方法進行初始化。(優先級中)。
第三種:通過“assets/sharesdk.xml”文件來配置,次方式會以明文存在,但這種方式最為簡單。(優先級最低)。
這三種方式開發者可以自行選擇,不過這三種設置方式各有區別:第一種方式可以實現“動態配置應用信息”的功能,但是一旦脫離網絡,sharesdk可能無法運作;第三種方式是優先級最低的方式,但是它最為方便、集中;最后使用代碼設置的方式是最靈活的方式,第二種方式開發者可以在代碼里面寫死應用信息,也可以通過私有協議,從自己的服務器上動態獲取應用注冊信息,其優先級居第一種和第二種之間。 使用sharesdk.xml配置注冊信息
1
2
3
4
5
6
7
8
9
|
<sharesdk appkey= "填寫您在sharesdk上注冊到的appkey" /> <sinaweibo sortid= "此平臺在您分享列表中的位置,整型,數值越大越靠后" appkey= "填寫您在新浪微博上注冊到的appkey" appsecret= "填寫您在新浪微博上注冊到的appsecret" id= "自定義字段,整型,用于您項目中對此平臺的識別符" redirecturl= "填寫您在新浪微博上注冊的redirecturl" sharebyappclient= "是否使用客戶端進行分享" enable= "布爾值,標記此平臺是否有效" /> |
sharesdk.xml以xml格式存儲數據,每一個平臺一個塊,除了社交平臺外,開發者在sharesdk注冊應用時得到的appkey需要填寫在塊“sharesdk”中,如果此appkey不是開發者自己的appkey,則將來在sharesdk應用后臺的統計數據將不正確。sharesdk的每一個平臺都具備sortid、id、enable四個字段,除此之外的字段(如新浪微博的appkey、appsecret、redirecturl、sharebyappclient等字段)需要到目標平臺上注冊應用以后得到,請正確填寫這些字段的數據,否則sharesdk無法完成授權,則后續的其它操作也將無法執行。
代碼配置注冊信息示例(演示初始化新浪微博配置信息) 因為各個分享平臺可以設置的配置信息不同,具體分享平臺需要設置哪些配置信息請參考sample里的sharesdk.xml配置文件
1
2
3
4
5
6
7
8
9
10
|
sharesdk.initsdk(context, "你的應用在sharesdk注冊時返回的appkey" ); hashmap<string,object> hashmap = new hashmap<string, object>(); hashmap.put( "id" , "1" ); hashmap.put( "sortid" , "1" ); hashmap.put( "appkey" , "568898243" ); hashmap.put( "appsecret" , "38a4f8204cc784f81f9f0daaf31e02e3" ); hashmap.put( "redirecturl" , "http://www.sharesdk.cn" ); hashmap.put( "sharebyappclient" , "true" ); hashmap.put( "enable" , "true" ); sharesdk.setplatformdevinfo(sinaweibo.name,hashmap); |
方法需要在sharesdk.initsdk()方法后調用,如果調用了sharesdk.stopsdk()需要在sharesdk.initsdk后重新調用sharesdk.setplatformdevinfo()方法。 關于應用信息不同字段的更詳細解釋,可以參考sharesdk.xml文件頭部的說明。
第四步:配置androidmanifest.xml
不同的集成度需要在androidmanifest.xml中添加的內容不一樣。但是首先您需要添加下面的權限列表:
1
2
3
4
5
6
7
8
9
|
<uses-permission android:name= "android.permission.access_wifi_state" /> <uses-permission android:name= "android.permission.access_network_state" /> <uses-permission android:name= "android.permission.change_wifi_state" /> <uses-permission android:name= "android.permission.get_accounts" /> <uses-permission android:name= "android.permission.manage_accounts" /> <uses-permission android:name= "android.permission.read_phone_state" /> <uses-permission android:name= "android.permission.write_external_storage" /> <uses-permission android:name= "android.permission.get_tasks" /> <uses-permission android:name= "android.permission.internet" /> |
這些權限將允許您的項目和sharesdk判斷當前應用是否“前置”、獲取連接網絡的權限、獲取您的設備網絡狀態的權限、實現https安全連接的權限、讀取手機設備狀態的權限和保存必要配置的權限。一般來說,即便不集成sharesdk,大部分的項目也都會注冊申請這些權限。
其次,為了授權操作可以順利完成,需要在application下注冊下面的activity:
1
2
3
4
5
6
|
<activity android:name= "com.mob.tools.mobuishell" android:theme= "@android:style/theme.translucent.notitlebar" android:configchanges= "keyboardhidden|orientation|screensize" android:screenorientation= "portrait" android:windowsoftinputmode= "statehidden|adjustresize" /> |
如果您的項目集微信或者微信朋友圈,請查看androidmanifest.xml配置文件里的package路徑,需要在package目錄下創建wxapi目錄再放置wxentryactivity。 沒有此activity在微信分享后回調會檢查是否有此activity,沒有將會報錯。
1
2
3
4
5
6
|
<activity android:name= ".wxapi.wxentryactivity" android:theme= "@android:style/theme.translucent.notitlebar" android:configchanges= "keyboardhidden|orientation|screensize" android:exported= "true" android:screenorientation= "portrait" /> |
而如果您的項目集易信的兩個平臺,請查看androidmanifest.xml配置文件里的package路徑需要在package目錄下創建yxapi目錄在放置回調activity:
1
2
3
4
5
6
|
<activity android:name= ".yxapi.yxentryactivity" android:theme= "@android:style/theme.translucent.notitlebar" android:configchanges= "keyboardhidden|orientation|screensize" android:exported= "true" android:screenorientation= "portrait" /> |
客戶端的操作回調,因此sharesdk也無法給予您操作回調。為了避免出錯,請使用相對路徑的方式,直接復制上面的代碼到您的androidmanifest.xml中即可。
第五步:添加代碼
打開您項目的入口activity,在其oncreate中插入下面的代碼: 如果使用sharesdk.xml方式配置調用
sharesdk.initsdk(this);
如果使用代碼配置應用注冊信息或者應用后臺配置應用注冊信息,調用
sharesdk.initsdk(this,”androidv1101″);
androidv1101:是你的應用在sharesdk注冊應用信息時返回的appkey。 代碼會初始化sharesdk,此后對sharesdk的操作都以此為基礎。如果不在所有sharesdk的操作之前調用這行代碼,會拋出空指針異常。
效果圖: