本文介紹的是快速接入社交分享 SDK 的操作步驟。
關於此任務
社交分享組件提供微博、微信、支付寶、QQ、DingTalk、簡訊等渠道的分享功能,提供給開發人員統一的介面,無需處理各 SDK 的介面差異性。要將分享組件接入 Android 用戶端,您需要配置工程確定基礎架構,並添加 share
組件的 SDK。
前置條件
在接入各渠道之前,必須在分享渠道的官方網站申請帳號。例如以下分享渠道的官方網站:
社交分享支援 原生 AAR 接入 和 組件化接入 兩種接入方式。
若採用原生 AAR 方式接入,需先完成 將 mPaaS 添加到您的專案中 的前提條件和後續相關步驟。
若採用組件化方式接入,需先完成 組件化接入流程。
添加 SDK
原生 AAR 方式
參考 AAR 組件管理,通過 組件管理(AAR) 在工程中安裝 分享 組件。
組件化方式
在 Portal 和 Bundle 工程中通過 組件管理 安裝 分享 組件。更多資訊,參考 管理組件依賴。
初始化 mPaaS
如果使用原生 AAR 方式,需要初始化 mPaaS。請在 Application 中添加以下代碼:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// mPaaS 初始化
MP.init(this);
}
}
詳情請參考:初始化 mPaaS。
各個平台分享 SDK 使用
本文將結合 社交分享 官方 Demo 介紹如何在 10.1.32 及以上版本的基準中使用社交分享 SDK。
微信分享
您需要手動產生一個特定路徑和名稱的 Activity
用來接收微信分享的回調事件。這個 Activity
繼承自 DefaultWXEntryActivity
,路徑為 package_name.wxapi.WXEntryActivity
。其中,package_name
為應用的包名。
路徑和 Activity
名稱必須準確,否則將無法收到回調。
查看以下樣本,其中包名為 com.mpaas.demo
:
package com.mpaas.demo.wxapi;
import com.alipay.android.shareassist.DefaultWXEntryActivity;
public class WXEntryActivity extends DefaultWXEntryActivity {
}
在 AndroidManifest.xml
中對該 Activity
進行註冊:
<application>
···
<activity android:name="com.mpaas.demo.wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTop">
</activity>
···
</application>
設定分享表徵圖時,確保表徵圖的大小不超過 32 KB,否則可能會引起微信分享失敗。目前在 Android 端 SDK 做了校正,表徵圖大小超過 32 KB 時會用預設的支付寶表徵圖代替。
QQ、QZone 分享
您需要在 AndroidManifest.xml
中,對 QQ 分享所需要的 Activity 進行註冊,否則無法正常使用 QQ、QZone 的分享和回調功能。
若您在
AndroidManifest.xml
中填寫的 QQ 分享 ID 和在代碼中註冊的 QQ 分享 ID 不一致時,會導致 QQ 分享回調錯亂的異常,即使分享成功也會回調onException
,請務必仔細檢查。在
data android:scheme
中要填寫對應的 QQ 分享 ID,格式為tencent+QQID
(+ 號請忽略)。該 ID 需要開發人員到 騰訊開放平台 中申請。查看以下樣本,其中 QQ ID 為 1104122330。
<application>
···
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:exported="true"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="tencent1104122330"/>
</intent-filter>
</activity>
···
</application>
微博分享
需要確保應用簽名、包名、分享 ID 和在 微博開放平台 中註冊的一致,否則將導致分享失敗。由此原因導致分享失敗時,share
組件的分享回調不會觸發分享異常 onException
,而會觸發分享成功 onComplete
。該缺陷屬於微博 SDK 缺陷,目前在微博 SDK 官方 Demo 中同樣會出現此問題。