本文介绍快速接入社交分享 SDK 的操作步骤。
关于此任务
社交分享组件提供微博、微信、支付宝、QQ、钉钉、短信等渠道的分享功能,提供给开发者统一的接口,无需处理各 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 中同样会出现此问题。