本文介绍的是快速接入社交分享 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 中同样会出现此问题。