下载SDK最新版 如下图所示:
根据需要,选择自己需要的平台、精简版/完整版
Demo工程包含了源码及Apk文件,Apk可以直接安装,用于体验分享、登录功能
umeng_social_api.jar
umeng_social_net.jar
umeng_social_tool.jar
QQ精简版(SocialSDK_QQ_Simplify.jar)
微信完整版(wechat-sdk-android-with-mta-1.0.2.jar SocialSDK_WeiXin_Full.jar)
新浪精简版(SocialSDK_Sina_Simplif.jar)
这里只列举QQ、微信和新浪,最终platforms文件夹内包含的文件与下载页面选择的平台有关
umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加)
umeng_social_shareboard.jar
这一项属于可选项目,使用了默认分享面板UI时需要添加
umeng_social_shareview.jar
这一项是否出现在压缩包中与下载页面选择平台有关,勾选了新浪精简版、豆瓣、人人时会出现
social_sdk_example_as(Android studio 环境Demo)
social_sdk_example(Eclipse环境Demo)
umeng_android_socialize_demo_full.apk(完整版Demo安装包)
umeng_android_socialize_demo_simple.apk(精简版Demo安装包,QQ、微信、新浪均使用精简版)
以下内容是针对老用户升级使用,如果是新用户,可以直接跳到工程配置文档
如果您之前使用的是4.x版本的sdk,请删除所有的社会化分享代码,jar以及资源文件,更新现在最新版的sdk,根据快速集成文档重新集成,因为4.x版本接口与现在完全不一样,所有接口都需要重新调用
之前使用友盟分享5.0+版本的老用户,可以直接替换对应jar和资源文件就可以了,但是注意默认下载的是新浪精简版,如果使用新浪精简版,不再需要.so文件,对应的Manifest配置,以及WBShareActivity.java。微信精简版,和qq精简版对应的jar名字不一样,需要将原有的jar删除,替换精简的jar,如果使用完整版直接替换即可。 res中的资源文件也要进行替换。 对应jar包名字对应如下:
平台 | 老版本 | 新版精简版 | 新版完整版 |
核心库 | umeng_social_sdk.jar | umeng_social_api.jar umeng_social_net.jar umeng_social_shareview.jar(可选,新浪精简版 豆瓣人人使用) umeng_social_shareboard.jar(可选 如果没有使用分享面板可以不使用) umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加) |
同精简版 |
mta-sdk-1.6.2.jar open_sdk_r5509_lite.jar SocialSDK_QQZone_3.jar |
SocialSDK_QQ_Simplify.jar | open_sdk_rxxxx_lite.jar SocialSDK_QQ_Full.jar |
|
新浪 | SocialSDK_Sina.jar weiboSDKCore_3.1.4.jar libweibosdkcore.so |
SocialSDK_Sina_Simplify.jar | SocialSDK_Sina_Full.jar weiboSDKCore_3.1.4.jar libweibosdkcore.so |
微信 | SocialSDK_WeiXin_1.jar SocialSDK_WeiXin_2.jar |
SocialSDK_WeChat_Simplify.jar | libammsdk.jar SocialSDK_WeiXin_Full.jar |
之前使用友盟分享6.0+版本的老用户,可以直接替换对应jar和资源文件就可以了,注意对应jar的名字即可。
平台 | 精简版(老版) | 精简版(新版) |
核心库 | umeng_social_apiv6.0.x.jar umeng_social_viewv6.0.x.jar umeng_social_netv6.0.x.jar |
umeng_social_api.jar umeng_social_net.jar umeng_social_shareview.jar(可选,新浪精简版 豆瓣人人使用) umeng_social_shareboard.jar(可选,如果没有使用分享面板可以不使用) umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加) |
SocialSDK_QQZone_3.jar SocialSDK_umengqq.jar |
SocialSDK_QQ_Simplify.jar | |
新浪 | SocialSDK_umengsina.jar | SocialSDK_Sina_Simplif.jar |
微信 | SocialSDK_WeiXin_1.jar SocialSDK_WeiXin_2.jar |
SocialSDK_WeChat_Simplify.jar |
平台 | 完整版(老版) | 完整版(新版) |
核心库 | 同精简版 | 同精简版 |
mta-sdk-1.6.2.jar open_sdk_r5509_lite.jar SocialSDK_QQZone_3.jar |
open_sdk_r5756_lite.jar SocialSDK_QQ_Full.jar |
|
新浪 | SocialSDK_Sina.jar weiboSDKCore_3.1.4.jar libweibosdkcore.so |
SocialSDK_Sina_Full.jar weiboSDKCore_3.1.4.jar libweibosdkcore.so |
微信 | 同精简版 | wechat-sdk-android-with-mta-1.0.2.jar SocialSDK_WeiXin_Full.jar |
UMShareListener shareListener = new UMShareListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
}
@Override
public void onResult(SHARE_MEDIA platform) {
}
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
}
@Override
public void onCancel(SHARE_MEDIA platform) {
}
};
UMAuthListener authListener = new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
}
@Override
public void onComplete(SHARE_MEDIA platform, int action, Map data) {
}
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
}
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
}
};
进行网页分享请使用UMWeb类型。点击查看文档
音乐类型新增setmTargetUrl方法,部分平台可以设置跳转链接。点击查看文档
title参数只在UMWeb类型中存在,设置title请使用UMWeb类型
点击查看文档
6.3版本之前设置新浪的回调地址是通过Config.REDIRECT_URL
6.3版本之后在设置appid的时候一起设置回调地址:
注意代码这里配置的回调地址需要和微博开放平台授权回调页保持一致
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
用户如需添加可在上面提到的onStart中show dialog,在回调完成后dismiss
由于微信、QQ等平台当用户选择留在应用后无法执行回调,因此建议在onResume中执行dialog消失事件
UMShareConfig config = new UMShareConfig();
config.isNeedAuthOnGetUserInfo(true);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);
目前SDK默认设置为在Token有效期内登录不进行二次授权,如果有需要每次登录都弹出授权页面,便于切换账号的开发者可以自行配置
UMShareConfig config = new UMShareConfig();
config.isOpenShareEditActivity(true);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);
注意此接口只有在新浪精简版、豆瓣和人人分享时生效,微信、QQ的分享编辑页为原生SDK提供,无法去除
只进行网页授权
UMShareConfig config = new UMShareConfig();
config.setSinaAuthType(UMShareConfig.AUTH_TYPE_WEBVIEW);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);
调用此接口后,无论用户设备是否安装微博客户端,都只会拉起网页授权
当安装的时候进行SSO授权:
UMShareConfig config = new UMShareConfig();
config.setSinaAuthType(UMShareConfig.AUTH_TYPE_SSO);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);
由于新浪即将对之前的云端接口进行关停,所以新浪精简版需要做一些改版:
代码层面不需要变动,只需要升级到6.4,替换6.4之后的所有jar
同时精简版
需要增加一个回调Activity:
<activity
android:name=".WBShareActivity"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
intent-filter>
activity>
这个Activity在包名路径下:
package com.umeng.soexample;
import com.umeng.socialize.media.WBShareCallBackActivity;
public class WBShareActivity extends WBShareCallBackActivity {
}
对于快速集成,我们以新浪微博QQ三个平台为例,工程配置分为以下四种,区别不大,不熟悉的朋友可以参考:
Android Studio精简版
Android Studio完整版
以下内容为Android Studio精简版配置
拷贝jar和res有如下两种形式
双击点开这个工具,如下图所示:
选择你想使用的平台,以及你所使用的开发工具,点击ok
会在当前目录下生成一个新的文件夹umeng_integratetool_result
只需将该文件夹下生成的对应文件对应放入你的工程中即可
这里注意如果使用了新浪微博精简版,或者豆瓣人人腾讯微博,需要加入umeng_social_shareview.jar及其对应的资源文件,如果没有使用这些平台可以不加
如果您的程序不想使用我们的分享面板,想自定义UI分享UI界面,umeng_social_shareboard.jar以及对应的资源文件也可以不用加
如果您使用了我们的分享面板,您的工程已经依赖的v4,可以不使用我们的umeng_shareboard_widget.jar
使用微信分享或者登陆功能
在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity
的activity继承WXCallbackActivity
。这里注意一定是包名路径下,例如我的包名是com.umeng.soexample,则配置如下:(需要注意,如果使用精简版WXCallbackActivity的路径为com.umeng.weixin.callback.WXCallbackActivity,如果使用完整版路径是com.umeng.socialize.weixin.view.WXCallbackActivity)
同理需要建立回调的平台还有支付宝与易信,支付宝是需要建立一个apshare的文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。易信是需要建立一个yxapi的文件夹,建立一个YXEntryActivity的类继承YXCallbackActivity。如果不使用这两个平台可以不用建立。
同理新浪微博也需要一个回调的Activity,与微信不同的是它只需要在包名目录下建立一个名为WBShareActivity
类即可,不用建立文件夹,该类继承WBShareCallBackActivity
,如下图所示(注意看目录结构):
新浪:
<activity
android:name=".WBShareActivity"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
intent-filter>
activity>
微信:
支付宝:
qq精简版:
<activity
android:name="com.umeng.qq.tencent.AuthActivity"
android:launchMode="singleTask"
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="tencent100424468" />
intent-filter>
activity>
<activity
android:name="com.umeng.qq.tencent.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
qq完整版:
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
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="tencent100424468" />
intent-filter>
activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
分享编辑页(只有新浪微博精简版,豆瓣人人腾讯微博需要):
其他平台的回调activity请到附录中查询。
data
android:name="UMENG_APPKEY"
android:value="561cae6ae0f55abd990035bf" >
data>
将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore
然后增加签名文件的密码:
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
然后在buildTypes中将这个signingConfigs配置进去,如下图所示:
签名文件如果不加,部分平台的授权会受到影响。
建立一个application文件,随便起一个名字,比如叫App,别忘了在AndroidManifest文件中配置(如果本身已有,不需要重新建立):
"true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name=".App"
android:theme="@style/AppTheme">
在application文件中配置三方平台的appkey:
这里作为示例,只配置了微信、QQ/Qzone、新浪的三方appkey,如果使用其他平台,在这里增加对应平台key配置
public class App extends Application{
{
PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com");
}
}
在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生:
@Override
public void onCreate() {
super.onCreate();
UMShareAPI.get(this);
}
以下内容为Android Studio完整版配置
拷贝jar和res有如下两种形式
双击点开这个工具,如下图所示:
选择你想使用的平台,以及你所使用的开发工具,点击ok
会在当前目录下生成一个新的文件夹umeng_integratetool_result
只需将该文件夹下生成的对应文件对应放入你的工程中即可
这里注意如果使用了新浪微博精简版,或者豆瓣人人腾讯微博,需要加入umeng_social_shareview.jar及其对应的资源文件,如果没有使用这些平台可以不加
如果您的程序不想使用我们的分享面板,想自定义UI分享UI界面,umeng_social_shareboard.jar以及对应的资源文件也可以不用加
如果您使用了我们的分享面板,您的工程已经依赖的v4,可以不使用我们的umeng_shareboard_widget.jar
使用微信分享或者登陆功能
在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity
的activity继承WXCallbackActivity
。这里注意一定是包名路径下,例如我的包名是com.umeng.soexample
,则配置如下:(需要注意,如果使用精简版WXCallbackActivity的路径为com.umeng.weixin.callback.WXCallbackActivity,如果使用完整版路径是com.umeng.socialize.weixin.view.WXCallbackActivity)
同理需要建立回调的平台还有支付宝与易信,支付宝是需要建立一个apshare的文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。易信是需要建立一个yxapi的文件夹,建立一个YXEntryActivity的类继承YXCallbackActivity。如果不使用这两个平台可以不用建立。
同理新浪微博也需要一个回调的Activity,与微信不同的是它只需要在包名目录下建立一个名为WBShareActivity
类即可,不用建立文件夹,该类继承WBShareCallBackActivity
,如下图所示(注意看目录结构):
新浪:
<activity
android:name=".WBShareActivity"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
intent-filter>
activity>
<activity
android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="adjustResize"
android:exported="false" >
activity>
<service android:name="com.sina.weibo.sdk.net.DownloadService"
android:exported="false">service>
微信:
支付宝:
qq完整版:
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
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="tencent100424468" />
intent-filter>
activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
分享编辑页(只有豆瓣人人腾讯微博twitter领英需要):
其他平台的回调activity请到附录中查询。
data
android:name="UMENG_APPKEY"
android:value="561cae6ae0f55abd990035bf" >
data>
将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore
然后增加签名文件的密码:
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
然后在buildTypes中将这个signingConfigs配置进去,如下图所示:
签名文件如果不加,部分平台的授权会受到影响。
建立一个application文件,随便起一个名字,比如叫App,别忘了在AndroidManifest文件中配置(如果本身已有,不需要重新建立):
在application文件中配置三方平台的appkey:
这里作为示例,只配置了微信、QQ/Qzone、新浪的三方appkey,如果使用其他平台,在这里增加对应平台key配置
public class App extends Application{
{
PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com");
}
}
在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生:
@Override
public void onCreate() {
super.onCreate();
UMShareAPI.get(this);
}
分享文档
授权文档
为了保证引用友盟Social SDK jar文件以及腾讯jar文件不被混淆,请在proguard.cfg文件中添加以下代码避免被混淆.
-dontusemixedcaseclassnames
-dontshrink
-dontoptimize
-dontwarn com.google.android.maps.**
-dontwarn android.webkit.WebView
-dontwarn com.umeng.**
-dontwarn com.tencent.weibo.sdk.**
-dontwarn com.facebook.**
-keep public class javax.**
-keep public class android.webkit.**
-dontwarn android.support.v4.**
-keep enum com.facebook.**
-keepattributes Exceptions,InnerClasses,Signature
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public interface com.facebook.**
-keep public interface com.tencent.**
-keep public interface com.umeng.socialize.**
-keep public interface com.umeng.socialize.sensor.**
-keep public interface com.umeng.scrshot.**
-keep class com.android.dingtalk.share.ddsharemodule.** { *; }
-keep public class com.umeng.socialize.* {*;}
-keep class com.facebook.**
-keep class com.facebook.** { *; }
-keep class com.umeng.scrshot.**
-keep public class com.tencent.** {*;}
-keep class com.umeng.socialize.sensor.**
-keep class com.umeng.socialize.handler.**
-keep class com.umeng.socialize.handler.*
-keep class com.umeng.weixin.handler.**
-keep class com.umeng.weixin.handler.*
-keep class com.umeng.qq.handler.**
-keep class com.umeng.qq.handler.*
-keep class UMMoreHandler{*;}
-keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}
-keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}
-keep class im.yixin.sdk.api.YXMessage {*;}
-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
-keep class com.tencent.mm.sdk.** {
*;
}
-keep class com.tencent.mm.opensdk.** {
*;
}
-dontwarn twitter4j.**
-keep class twitter4j.** { *; }
-keep class com.tencent.** {*;}
-dontwarn com.tencent.**
-keep public class com.umeng.com.umeng.soexample.R$*{
public static final int *;
}
-keep public class com.linkedin.android.mobilesdk.R$*{
public static final int *;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class com.tencent.open.TDialog$*
-keep class com.tencent.open.TDialog$* {*;}
-keep class com.tencent.open.PKDialog
-keep class com.tencent.open.PKDialog {*;}
-keep class com.tencent.open.PKDialog$*
-keep class com.tencent.open.PKDialog$* {*;}
-keep class com.sina.** {*;}
-dontwarn com.sina.**
-keep class com.alipay.share.sdk.** {
*;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class com.linkedin.** { *; }
-keepattributes Signature