友盟+搜索

{{errorMsg}}

获取SDK

下载SDK操作流程

下载SDK最新版 如下图所示:

 SDK组件说明

根据需要,选择自己需要的平台、精简版/完整版

SDK文件目录介绍

  • main -- 核心库

umeng_social_api.jar
umeng_social_net.jar
umeng_social_tool.jar

  • platforms -- 分享平台库

QQ精简版(SocialSDK_QQ_Simplify.jar)
微信完整版(libammsdk.jar SocialSDK_WeiXin_Full.jar)
新浪精简版(SocialSDK_Sina_Simplif.jar)

这里只列举QQ、微信和新浪,最终platforms文件夹内包含的文件与下载页面选择的平台有关

  • shareboard

umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加)
umeng_social_shareboard.jar

  • shareview

umeng_social_shareview.jar

  • Demo工程

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升级说明

如果您之前使用的是4.x版本的sdk,请删除所有的社会化分享代码,jar以及资源文件,更新现在最新版的sdk,根据快速集成文档重新集成,因为4.x版本接口与现在完全不一样接口差异有很大的变化

 5.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或不使用面板可以不加)
同精简版
QQ 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.0x版本

之前使用友盟分享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或不使用面板可以不加)
同精简版
QQ SocialSDK_QQZone_3.jar
SocialSDK_umengqq.jar
mta-sdk-1.6.2.jar
open_sdk_r5509_lite.jar
SocialSDK_QQZone_3.jar
SocialSDK_QQ_Simplify.jar open_sdk_r5756_lite.jar
SocialSDK_QQ_Full.jar
新浪 SocialSDK_umengsina.jar SocialSDK_Sina.jar
weiboSDKCore_3.1.4.jar
libweibosdkcore.so
SocialSDK_Sina_Simplif.jar SocialSDK_Sina_Full.jar
weiboSDKCore_3.1.4.jar
libweibosdkcore.so
微信 SocialSDK_WeiXin_1.jar
SocialSDK_WeiXin_2.jar
同精简版 SocialSDK_WeChat_Simplify.jar ibammsdk.jar
SocialSDK_WeiXin_Full.jar

6.3接口变动

所有的回调监听器增加onStart()方法

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<String, String> data) {

        }

        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {
                  }

        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {

        }
    };

设置新浪回调地址

6.3版本之前设置新浪的回调地址是通过Config.REDIRECT_URL

6.3版本之后在设置appid的时候一起设置回调地址:

PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");

去掉了等待窗

用户如需添加可在上面提到的onStart中show dialog,在回调完成后dismiss

去掉了ShareAction的WithTargetURl

进行网页分享请使用UMWeb类型。 点击查看文档 音乐类型新增setmTargetUrl方法,部分平台可以设置跳转链接。点击查看文档

获取用户信息时是否每次都要进行授权

UMShareConfig config = new UMShareConfig();
config.isNeedAuthOnGetUserInfo(true);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);

是否使用分享编辑页

UMShareConfig config = new UMShareConfig();
config.isOpenShareEditActivity(true);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);

设置新浪网页授权还是SSO授权

只进行网页授权

 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);

工程配置

对于快速集成,我们以新浪微博QQ三个平台为例,工程配置分为以下四种,区别不大,不熟悉的朋友可以参考:

Android Studio精简版

Android Studio完整版

工程配置(精简版)

以下内容为Android Studio精简版配置

新建立一个工程

拷贝jar及res

拷贝jar和res有如下两种形式

a.将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程

b.如果不想像a方式一样一个个拷贝,可以使用集成工具umeng_integrate_tool.jar

双击点开这个工具,如下图所示:

选择你想使用的平台,以及你所使用的开发工具,点击ok 会在当前目录下生成一个新的文件夹umeng_integratetool_result

只需将该文件夹下生成的对应文件对应放入你的工程中即可 这里注意如果使用了新浪微博精简版,或者豆瓣人人腾讯微博,需要加入umeng_social_shareview.jar及其对应的资源文件,如果没有使用这些平台可以不加 如果您的程序不想使用我们的分享面板,想自定义UI分享UI界面,umeng_social_shareboard.jar以及对应的资源文件也可以不用加 如果您使用了我们的分享面板,您的工程已经依赖的v4,可以不使用我们的umeng_shareboard_widget.jar

添加对应的回调Activity

包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。这里注意一定是包名路径下,例如我的包名是com.umeng.soexample,则配置如下:(需要注意,如果使用精简版WXCallbackActivity的路径为com.umeng.weixin.callback.WXCallbackActivity,如果使用完整版路径是com.umeng.socialize.weixin.view.WXCallbackActivity)

在这里你可能会爆红也可能不爆红这是由于IDE还没有sync刚才放入的jar包。 同理需要建立回调的平台还有支付宝与易信,支付宝是需要建立一个apshare的文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。易信是需要建立一个yxapi的文件夹,建立一个YXEntryActivity的类继承YXCallbackActivity。如果不使用这两个平台可以不用建立。 (如果使用精简版则不需要)同理新浪微博也需要一个回调的Activity,与微信不同的是它只需要在包名目录下建立一个名为WBShareActivity类即可,不用建立文件夹,该类继承WBShareCallBackActivity,如下图所示(注意看目录结构):

添加onActivityResult

如果使用的是qq或者新浪精简版jar,需要在您使用分享或授权的Activity(fragment不行)中添加如下回调代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);

}

修改AndroidManiFest

首先需要添加权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

然后加入sdk中需要的Activity:

微信:

<activity
        android:name=".wxapi.WXEntryActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:exported="true"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

支付宝:

    <activity
        android:name=".apshare.ShareEntryActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:exported="true"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

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
        android:name="com.umeng.socialize.editorpage.ShareActivity"
        android:theme="@style/Theme.UMDefault"
        android:excludeFromRecents="true"
        />

其他平台的回调activity请到附录中查询。

添加友盟appkey
    <meta-data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf" >
    </meta-data>

修改build.gradle文件

将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore

然后增加签名文件的密码:

signingConfigs {
    debug {
        storeFile file('debug.keystore')
        storePassword "android"
        keyAlias "androiddebugkey"
        keyPassword "android"
    }
}

然后在buildTypes中将这个signingConfigs配置进去,如下图所示:

签名文件如果不加,部分平台的授权会受到影响。

配置各个平台的appkey

建立一个application文件,随便起一个名字,比如叫App,别忘了在AndroidManifest文件中配置(如果本身已有,不需要重新建立):

     <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:name=".App"
        android:theme="@style/AppTheme">

在application文件中配置三方平台的appkey:

    public class App extends Application{
    {

        PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");
        PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");

    }
    }

在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生:

        @Override
        public void onCreate() {
        super.onCreate();
        UMShareAPI.get(this);
    }

如果您使用了新浪微博,需要在这里设置回调地址:

Config.REDIRECT_URL = "您新浪后台的回调地址"

工程配置(完整版)

以下内容为Android Studio完整版配置

新建立一个工程

拷贝jar及res

拷贝jar和res有如下两种形式

a.将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程

Paste_Image.png

b.如果不想像a方式一样一个个拷贝,可以使用集成工具umeng_integrate_tool.jar

双击点开这个工具,如下图所示:

选择你想使用的平台,以及你所使用的开发工具,点击ok 会在当前目录下生成一个新的文件夹umeng_integratetool_result

只需将该文件夹下生成的对应文件对应放入你的工程中即可 这里注意如果使用了新浪微博精简版,或者豆瓣人人腾讯微博,需要加入umeng_social_shareview.jar及其对应的资源文件,如果没有使用这些平台可以不加 如果您的程序不想使用我们的分享面板,想自定义UI分享UI界面,umeng_social_shareboard.jar以及对应的资源文件也可以不用加 如果您使用了我们的分享面板,您的工程已经依赖的v4,可以不使用我们的umeng_shareboard_widget.jar

添加对应的回调Activity

包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。这里注意一定是包名路径下,例如我的包名是com.umeng.soexample,则配置如下:(需要注意,如果使用精简版WXCallbackActivity的路径为com.umeng.weixin.callback.WXCallbackActivity,如果使用完整版路径是com.umeng.socialize.weixin.view.WXCallbackActivity)

在这里你可能会爆红也可能不爆红这是由于IDE还没有sync刚才放入的jar包。 同理需要建立回调的平台还有支付宝与易信,支付宝是需要建立一个apshare的文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。易信是需要建立一个yxapi的文件夹,建立一个YXEntryActivity的类继承YXCallbackActivity。如果不使用这两个平台可以不用建立。 (如果使用精简版则不需要)同理新浪微博也需要一个回调的Activity,与微信不同的是它只需要在包名目录下建立一个名为WBShareActivity类即可,不用建立文件夹,该类继承WBShareCallBackActivity,如下图所示(注意看目录结构):

添加onActivityResult

如果使用的是qq或者新浪精简版jar,需要在您使用分享或授权的Activity(fragment不行)中添加如下回调代码:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);

    }

修改AndroidManiFest

首先需要添加权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

然后加入sdk中需要的Activity:

微信:

<activity
        android:name=".wxapi.WXEntryActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:exported="true"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

支付宝:

    <activity
        android:name=".apshare.ShareEntryActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:exported="true"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

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
        android:name="com.umeng.socialize.editorpage.ShareActivity"
        android:theme="@style/Theme.UMDefault"
        android:excludeFromRecents="true"
        />

其他平台的回调activity请到附录中查询。

添加友盟appkey
    <meta-data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf" >
    </meta-data>

修改build.gradle文件

将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore

然后增加签名文件的密码:

signingConfigs {
    debug {
        storeFile file('debug.keystore')
        storePassword "android"
        keyAlias "androiddebugkey"
        keyPassword "android"
    }
}

然后在buildTypes中将这个signingConfigs配置进去,如下图所示:

签名文件如果不加,部分平台的授权会受到影响。

配置各个平台的appkey

建立一个application文件,随便起一个名字,比如叫App,别忘了在AndroidManifest文件中配置(如果本身已有,不需要重新建立):

 <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:name=".App"
    android:theme="@style/AppTheme">

在application文件中配置三方平台的appkey:

    public class App extends Application{
    {

        PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");
        PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
    }
    }

在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生:

        @Override
        public void onCreate() {
        super.onCreate();
        UMShareAPI.get(this);
    }

如果您使用了新浪微博,需要在这里设置回调地址:

Config.REDIRECT_URL = "您新浪后台的回调地址"

分享

分享文档

授权

授权文档

混淆文件

为了保证引用友盟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