友盟+搜索

{{errorMsg}}

友盟Appkey及三方Appkey的申请

论坛链接

SDK包目录结构

  • main -- 核心库

umeng_social_api.jar
umeng_social_net.jar
umeng_social_tool.jar

  • platforms -- 分享平台库

QQ精简版(SocialSDK_QQ_Simplify.jar)
微信完整版(wechat-sdk-android-with-mta-1.0.2.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

老用户升级说明

以下内容是针对老用户升级使用,如果是新用户,可以直接跳到工程配置文档

4.x及之前版本

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

5.x版本

如果您之前使用的是5.x版本的sdk,您需要:

  • 删除所有的jar和资源文件,删除的过程中,5.x版本的jar要删除干净,否则可能出现jar冲突
  • 如果您使用的是精简版还需要参照对应平台的工程配置,重新配置工程,请参照工程配置文档
  • 最新版的部分接口变动

6.x版本

如果您之前使用的是6.x版本的sdk,您需要:

  • 替换所有的jar和资源文件
  • 最新版的部分接口变动

6.3接口变动

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

    去掉了ShareAction的WithTargetURl

  • 进行网页分享请使用UMWeb类型。点击查看文档

  • 音乐类型新增setmTargetUrl方法,部分平台可以设置跳转链接。点击查看文档

    去掉了withTitle接口

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的分享编辑页为客户端提供,无法去除

6.4接口变动

由于新浪即将对之前的云端接口进行关停,所以新浪精简版需要做一些改版: 代码层面不需要变动,只需要升级到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 {
}

6.4.5接口变动

新浪不再需要WBShareActivity,只需在AndroidManifest中配置:

   <activity
            android:name="com.umeng.socialize.media.WBShareCallBackActivity"
            android:configChanges="keyboardHidden|orientation"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:exported="false"
            android:screenOrientation="portrait" >
        </activity>

        <activity
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
            android:launchMode="singleTask"
            android:name="com.sina.weibo.sdk.share.WbShareTransActivity">
            <intent-filter>
                <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

        </activity>

6.5Jar更新

使用6.5.0的用户需要替换所有jar,同时增加一个新的jar:umeng-common-vx.x.x.jar,这是一个Common包,使用友盟push或统计都会有这个包,保留一个即可。

6.7.0更新

微信配置不再区分精简版或完整版,统一使用com.umeng.socialize.weixin.view.WXCallbackActivity QQ配置不再区分精简版或完整版,AndroidManifest统一配置

    <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"/>

工程配置

接下来,我们以新浪微博,微信,QQ三个平台为例:

导入jar和res

导入jar和res主要有以下两种形式:

手动导入:

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

集成工具导入:

下图便是我们的集成工具:

双击点开集成工具

选择你使用的平台和IDE:

点击OK键,会生成umeng_integratetool_result一个文件夹:

将对应的文件夹拷贝进入你的工程中即可。

添加回调Activity

微信

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

支付宝

与微信相似,支付宝需要在包名目录下创建apshare文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。

钉钉

与微信相似,钉钉需要在包名目录下创建ddshare文件夹,然后建立一个DDShareActivity的类,DingCallBack。

QQ与新浪

QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加:

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

配置Android Manifest XML

权限的添加

    <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="com.umeng.socialize.media.WBShareCallBackActivity"
            android:configChanges="keyboardHidden|orientation"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:exported="false"
            android:screenOrientation="portrait" >
        </activity>

        <activity
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
            android:launchMode="singleTask"
            android:name="com.sina.weibo.sdk.share.WbShareTransActivity">
            <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=".apshare.ShareEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    
    
  • 钉钉:

    <activity
        android:name=".ddshare.DingCallBack"
        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"/>

  • 分享编辑页(只有新浪微博,精简版,豆瓣,人人,腾讯微博,领英,twitter需要):

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

添加友盟appkey

    <meta-data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf" >
    </meta-data>

Android6.0权限适配

请查看你的build.gradle文件,如果 targetSdkVersion小于或等于22,可以忽略这一步,如果大于或等于23,需要做权限的动态申请:

if(Build.VERSION.SDK_INT>=23){
                  String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS};
                  ActivityCompat.requestPermissions(this,mPermissionList,123);
              }

其中123是requestcode,可以根据这个code判断,用户是否同意了授权。如果没有同意,可以根据回调进行相应处理:

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {


}

配置友盟key及三方key

建立一个application文件,注意要在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:

这里作为示例,只配置了微信、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);
}

签名配置

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

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

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

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

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

使用分包功能的注意事项

部分用户可能会由于方法数限制问题使用了multiDexEnabled true 对于这部分用户,需要正确配置application否则可能会出现NoClassDefFoundError 具体配置可以参照MultiDex教学

完整版区别配置

对于微信和QQ的精简版完整版之间的配置差异,这里做一下特别说明:

微信

微信的差异主要体现在WXEntryActivity的父类WXCallbackActivity上: 精简版WXCallbackActivity的路径为com.umeng.weixin.callback.WXCallbackActivity, 完整版WXCallbackActivity的路径为com.umeng.socialize.weixin.view.WXCallbackActivity

QQ

QQ的差异主要体现在AndroidManifest.xml上: 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"/>

混淆配置

-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 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.** {
   *;
}
-keep class com.tencent.wxop.** {
   *;
}
-keep class com.tencent.mm.sdk.** {
   *;
}
-dontwarn twitter4j.**
-keep class twitter4j.** { *; }

-keep class com.tencent.** {*;}
-dontwarn com.tencent.**
-keep class com.kakao.** {*;}
-dontwarn com.kakao.**
-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.umeng.socialize.impl.ImageImpl {*;}
-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.** { *; }
-keep class com.android.dingtalk.share.ddsharemodule.** { *; }
-keepattributes Signature


分享集成

友盟分享分为两种形式:

  • 使用分享面板的分享,用户可以调用我们的打开分享面板的方法,点击分享面板的对应平台进行分享。
  • 不使用分享面板的分享,用户可以自己写分享按钮,或者触发事件,然后调用我们的分享方法,进行分享。

简而言之,直接分享就是在用户自己的界面组件中插入分享行为,分享面板是打开我们写好的一个界面组件,根据点击事件进行分享。

分享(带面板)

打开分享面板的代码如下:

new ShareAction(MainActivity.this)
    .withText("hello")                    
    .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)
    .setCallback(umShareListener)
    .open();

关于分享面板的更多功能可以参照分享面板进阶

分享(不带面板)

分享可以通过如下代码实现:

new ShareAction(MainActivity.this)
.setPlatform(SHARE_MEDIA.QQ)//传入平台
.withText("hello")//分享内容
.setCallback(umShareListener)//回调监听器
.share();

其中umShareListener为回调监听,构建如下:

 private UMShareListener shareListener = new UMShareListener() {
        /**
         * @descrption 分享开始的回调
         * @param platform 平台类型
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @descrption 分享成功的回调
         * @param platform 平台类型
         */
        @Override
        public void onResult(SHARE_MEDIA platform) {
            Toast.makeText(ShareDetailActivity.this,"成功了",Toast.LENGTH_LONG).show();
        }

        /**
         * @descrption 分享失败的回调
         * @param platform 平台类型
         * @param t 错误原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) {
            Toast.makeText(ShareDetailActivity.this,"失败"+t.getMessage(),Toast.LENGTH_LONG).show();
        }

        /**
         * @descrption 分享取消的回调
         * @param platform 平台类型
         */
        @Override
        public void onCancel(SHARE_MEDIA platform) {
            Toast.makeText(ShareDetailActivity.this,"取消了",Toast.LENGTH_LONG).show();

        }
    };

分享消息类型

对于分享内容可以有如下设置

文本

纯文本分享如下:

new ShareAction(ShareActivity.this).withText("hello").withMedia(image).share();

图片

在使用ShareAction的时候,调用withMedia可以设置一个UMImage(图片分享),UMImage的构建有如下几种形式

UMImage image = new UMImage(ShareActivity.this, "imageurl");//网络图片
UMImage image = new UMImage(ShareActivity.this, file);//本地文件
UMImage image = new UMImage(ShareActivity.this, R.drawable.xxx);//资源文件
UMImage image = new UMImage(ShareActivity.this, bitmap);//bitmap文件
UMImage image = new UMImage(ShareActivity.this, byte[]);//字节流

推荐使用网络图片和资源文件的方式,平台兼容性更高。 对于部分平台,分享的图片需要设置缩略图,缩略图的设置规则为:

UMImage thumb =  new UMImage(this, R.drawable.thumb);
image.setThumb(thumb);

用户设置的图片大小最好不要超过250k,缩略图不要超过18k,如果超过太多(最好不要分享1M以上的图片,压缩效率会很低),图片会被压缩。 用户可以设置压缩的方式:


image.compressStyle = UMImage.CompressStyle.SCALE;//大小压缩,默认为大小压缩,适合普通很大的图
image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享
压缩格式设置
image.compressFormat = Bitmap.CompressFormat.PNG;//用户分享透明背景的图片可以设置这种方式,但是qq好友,微信朋友圈,不支持透明背景图片,会变成黑色

创建好UMImage之后调用分享即可,如下所示:

new ShareAction(ShareActivity.this).withText("hello").withMedia(image).share();

链接

分享链接可以使用UMWeb进行分享:

UMWeb  web = new UMWeb(Defaultcontent.url);
        web.setTitle("This is music title");//标题
        web.setThumb(thumb);  //缩略图
        web.setDescription("my description");//描述

然后调用将这个参数设置到ShareAction中:

new ShareAction(ShareActivity.this)
    .withMedia(web)
    .share();

视频

视频只能使用网络视频:

UMVideo video = new UMVideo(videourl);
video.setTitle("This is music title");//视频的标题
video.setThumb("http://www.umeng.com/images/pic/social/chart_1.png");//视频的缩略图
video.setDescription("my description");//视频的描述

建立好之后可以进行分享:

new ShareAction(ShareActivity.this).withText("hello").withMedia(video).share(); 

音乐

音乐只能使用网络音乐:

UMusic music = new UMusic(musicurl);//音乐的播放链接
music.setTitle("This is music title");//音乐的标题
music.setThumb("http://www.umeng.com/images/pic/social/chart_1.png");//音乐的缩略图
music.setDescription("my description");//音乐的描述
music.setmTargetUrl(Defaultcontent.url);//音乐的跳转链接

建立好之后可以进行分享:

new ShareAction(ShareActivity.this)
    .withMedia(music)
    .share();      

特别说明:播放链接是指在微信qq分享音乐,是可以在当前聊天界面播放的,要求这个musicurl(播放链接)必须要以.mp3等音乐格式结尾,跳转链接是指点击linkcard之后进行跳转的链接。

GIF

目前只有微信好友分享支持Emoji表情,其他平台暂不支持

UMEmoji emoji = new UMEmoji(this,"http://img5.imgtn.bdimg.com/it/u=2749190246,3857616763&fm=21&gp=0.jpg");
emoji.setThumb(new UMImage(this, R.drawable.thumb));
new ShareAction(ShareActivity.this)
    .withMedia(emoji)
    .share(); 

微信小程序

目前只有微信好友支持小程序分享,朋友圈,收藏及其他平台暂不支持:

UMMin umMin = new UMMin(Defaultcontent.url);
umMin.setThumb(imagelocal);
umMin.setTitle(Defaultcontent.title);
umMin.setDescription(Defaultcontent.text);
umMin.setPath("pages/page10007/xxxxxx");
umMin.setUserName("xx_xxx");
new ShareAction(ShareDetailActivity.this)
    .withMedia(umMin)
    .setPlatform(share_media)
    .setCallback(shareListener)
    .share();

分享到其他平台

各平台支持的分享类型预览

平台 是否支持登录 可分享内容 是否支持获取用户信息
QQ 图片 链接 视频 音乐
Qzone 文字(说说) 图片(说说) 链接 视频 音乐
微信 文本 图片 链接 视频 音乐
微信朋友圈 文本 图片 链接(Description不会显示) 视频 音乐
新浪微博 文本 图片 图文 链接(需要linkcard权限,否则不显示图片) 视频 音乐
腾讯微博 是(网页) 文本 图片 图文 链接 视频 音乐
支付宝 文本 图片 链接 视频 音乐
钉钉 文本 图片 链接 视频 音乐
易信/朋友圈 文本 图片 链接 视频 音乐
人人 是(网页) 文本 图文 图片
豆瓣 是(网页) 文本 图文 图片
点点虫动态 文本 图文 图片 链接 视频 音乐
微信收藏 文本 图片 链接 视频 音乐 文件
LinkedIn 文本 图文 图片 链接 视频 音乐
Facebook 图片 链接 视频
Facebook Messenger 图片 链接 视频
Twitter 文本 图文 图片
短信 文本 图文 图片
邮件 文本 图文 图片
Instagram 图片
Pinterest 图片
Tumblr 文本 图片
line 文本 图文 图片
whatsapp 文本 图片 图文
flickr 图片
kakao 文本 图文 图片
googleplus 文本 图文 图片
印象笔记 文本 图片 图文
有道笔记 文本 图片 图文
pocket 链接
foursquare 图片
Dropbox 图片
VKnotakte 图片 文本 链接 音乐 视频

各平台枚举参数

平台 枚举变量
QQ SHARE_MEDIA.QQ
Qzone SHARE_MEDIA.QZONE
微信还有 SHARE_MEDIA.WEIXIN
微信朋友圈 SHARE_MEDIA.WEIXIN_CIRCLE
微信收藏 SHARE_MEDIA.WEIXIN_FAVORITE
腾讯微博 SHARE_MEDIA.TENCENT
新浪 SHARE_MEDIA.SINA
人人 SHARE_MEDIA.RENREN
短信 SHARE_MEDIA.SMS
电子邮件 SHARE_MEDIA.EMAIL
豆瓣 SHARE_MEDIA.DOUBAN
Facebook SHARE_MEDIA.FACEBOOK
Facebook Message SHARE_MEDIA.FACEBOOK_MESSAGER
Twitter SHARE_MEDIA.TWITTER
易信 SHARE_MEDIA.YIXIN
易信朋友圈 SHARE_MEDIA.YIXIN_CIRCLE
Instagram SHARE_MEDIA.INSTAGRAM
Pinterest SHARE_MEDIA.PINTEREST
印象笔记 SHARE_MEDIA.EVERNOTE
Pocket SHARE_MEDIA.POCKET
领英 SHARE_MEDIA.LINKEDIN
有道云笔记 SHARE_MEDIA.YNOTE
WhatsApp SHARE_MEDIA.WHATSAPP
LINE SHARE_MEDIA.LINE
flickr SHARE_MEDIA.FLICKR
tumblr SHARE_MEDIA.TUMBLR
支付宝 SHARE_MEDIA.ALIPAY
KAKAO SHARE_MEDIA.KAKAO
DropBox SHARE_MEDIA.DROPBOX
VKontake SHARE_MEDIA.VKONTAKTE
钉钉 SHARE_MEDIA.DINGTALK
谷歌+ SHARE_MEDIA.GOOGLEPLUS
更多 SHARE_MEDIA.MORE

分享UI自定义

分享按钮自定义

为分享面板添加一个自定义按钮:

new ShareAction(ShareMenuActivity.this)
    .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN,SHARE_MEDIA.WEIXIN_CIRCLE)
    //分享平台
    .addButton("umeng_sharebutton_custom","umeng_sharebutton_custom","info_icon_1","info_icon_1")
    // 自定义按钮
    .setShareboardclickCallback(shareBoardlistener)
    //面板点击监听器
    .open();

addButton

下面对addButton进行一下解释:

  • 第一个参数(umeng_sharebutton_custom)和第二个参数(umeng_sharebutton_custom) 第一个参数是显示的名字,第二个参数是平台名称,用法如下: 在string文件中设置:

    <string name="umeng_sharebutton_custom">自定义分享按钮</string>
    
    

    然后将名字umeng_sharebutton_custom当做参数传入。

  • 第三个参数(info_icon_1)和第四个参数(info_icon_1): 第三个参数是按钮图标的图片名字,第四个按钮是置灰情况下按钮图标的图片名字,例如,你在drawable文件夹下有个图片叫做info_icon_1.png,想用该图片做按钮图标,可以将info_icon_1作为参数传入

分享面板回调监听

该监听器的目的是监听分享面板的点击事件:

private ShareBoardlistener shareBoardlistener = new  ShareBoardlistener() {

    @Override
    public void onclick(SnsPlatform snsPlatform,SHARE_MEDIA share_media) {
        if (share_media==null){
        //根据key来区分自定义按钮的类型,并进行对应的操作
            if (snsPlatform.mKeyword.equals("umeng_sharebutton_custom")){
                Toast.makeText(ShareActivity.this,"add button                                       success",Toast.LENGTH_LONG).show();
            }

        }
        else {//社交平台的分享行为
            new ShareAction(ShareActivity.this)
            .setPlatform(share_media)
            .setCallback(umShareListener)
            .withText("多平台分享")
            .share();
        }
    }
};

分享编辑页自定义

分享编辑页只能在人人,豆瓣,twitter,领英中使用,该编辑页的自定义只支持umeng_socialize_share.xml中的配置,具体组件对应如下:

常用接口调用

内存泄露处理方法

在使用分享或者授权的Activity中,重写onDestory()方法:

@Override
protected void onDestroy() {
        super.onDestroy();
        UMShareAPI.get(this).release();
}

判断客户端安装

使用如下接口

mShareAPI.isInstall(this, SHARE_MEDIA.WEIXIN)

Debug模式开启方式

在初始化sdk的地方

Config.DEBUG = true

水印开启

在6.2之后的版本之后,开发者可以调用我们的方法添加水印。需要注意的是,控制添加水印图片的大小,防止OOM 首先使用水印功能,需要额外的umeng_social_tool.jar,不使用水印功能,可以不用添加。 然后调用方法,进行添加:

UMImageMark umImageMark = new UMImageMark();
umImageMark.setGravity(Gravity.BOTTOM | Gravity.RIGHT);
umImageMark.setMarkBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.umeng_socialize_twitter));
umImageMark.setAlpha(xxxx)//设置透明度
umImageMark.setMargins(left,top,right,bottom)//设置边距

然后将构建好的umImageMark放入要分享的UMImage中即可:

imagelocal = new UMImage(this,R.drawable.logo,umImageMark);

需要注意的是本地文件和网络链接的图片形式,不支持添加水印。

三方登录集成

第三方登录包含两种使用场景:

  • 获取用户资料的授权接口,使用该接口可以获取该三方平台返回的所有资料(包括姓名,性别,头像等)

  • 三方授权,开发者调用授权接口,可以获取accesstoken相关的信息,但是没有用户资料(姓名,性别,头像等),需要开发者根据token自己去请求用户资料,对于保密性要求较高的用户可以使用。 目前支持第三方登录的平台包括:

  • 国内平台(微信、新浪微博、QQ、豆瓣、人人)

  • 国外平台(Facebook、Twitter、linkedIn、kakao、VKontakte、Dropbox)

获取用户资料授权

获取用户资料可以使用如下接口:

mShareAPI.getPlatformInfo(UserinfoActivity.this, SHARE_MEDIA.SINA, umAuthListener);

其中umAuthListener为授权回调,构建如下:

UMAuthListener authListener = new UMAuthListener() {
        /**
         * @desc 授权开始的回调
         * @param platform 平台名称
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @desc 授权成功的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         * @param data 用户资料返回
         */
        @Override
        public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {

            Toast.makeText(mContext, "成功了", Toast.LENGTH_LONG).show();

       }

        /**
         * @desc 授权失败的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         * @param t 错误原因
         */
        @Override
       public void onError(SHARE_MEDIA platform, int action, Throwable t) {

        Toast.makeText(mContext, "失败:" + t.getMessage(),                                  Toast.LENGTH_LONG).show();
        }

        /**
         * @desc 授权取消的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         */
        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            Toast.makeText(mContext, "取消了", Toast.LENGTH_LONG).show();
        }
    };

登录成功后,第三方平台会将用户资料传回, 全部会在Map data中返回 ,由于各个平台对于用户资料的标识不同,因此为了便于开发者使用,我们将一些常用的字段做了统一封装,开发者可以直接获取,不再需要对不同平台的不同字段名做转换,这里列出我们封装的字段及含义。

UShare封装后字段名 QQ原始字段名 微信原始字段名 新浪原始字段名 字段含义 备注
uid openid unionid id 用户唯一标识 uid可以实现Android与iOS平台打通,但QQ平台只能使用unionid实现打通
name screen_name screen_name screen_name 用户昵称
gender gender gender gender 用户性别 该字段会直接返回男女
iconurl profile_image_url profile_image_url profile_image_url 用户头像

其它字段返回规则可以参照 附录

第三方授权

获取用户资料可以使用如下接口:

 mShareAPI.doOauthVerify(MainActivity.this, SHARE_MEDIA.QQ, umAuthListener);

其中umAuthListener为授权回调,构建如下:

UMAuthListener authListener = new UMAuthListener() {
        /**
         * @desc 授权开始的回调
         * @param platform 平台名称
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @desc 授权成功的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         * @param data 用户资料返回
         */
        @Override
        public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {

            Toast.makeText(mContext, "成功了", Toast.LENGTH_LONG).show();

        }

        /**
         * @desc 授权失败的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         * @param t 错误原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {

       Toast.makeText(mContext, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show();
        }

        /**
         * @desc 授权取消的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         */
        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {

            Toast.makeText(mContext, "取消了", Toast.LENGTH_LONG).show();
        }
    };

这里需要注意,相比获取用户资料,授权只能返回uid和token等部分信息。 各平台字段返回规则可以参照附录

附录

三方平台错误码

QQ平台错误码对照

110201:未登陆
110405:登录请求被限制
110404:请求参数缺少appid
110401:请求的应用不存在
110407:应用已经下架
110406:应用没有通过审核
100044:未经过安全校验的包名和签名
110500:获取用户授权信息失败
110501:获取应用的授权信息失败
110502:设置用户授权失败
110503:获取token失败
110504:系统内部错误

微信平台错误码对照

40001   invalid credential  不合法的调用凭证
40002   invalid grant_type  不合法的grant_type
40003   invalid openid  不合法的OpenID
40004   invalid media type  不合法的媒体文件类型
40007   invalid media_id    不合法的media_id
40008   invalid message type    不合法的message_type
40009   invalid image size  不合法的图片大小
40010   invalid voice size  不合法的语音大小
40011   invalid video size  不合法的视频大小
40012   invalid thumb size  不合法的缩略图大小
40013   invalid appid   不合法的AppID
40014   invalid access_token    不合法的access_token
40015   invalid menu type   不合法的菜单类型
40016   invalid button size 不合法的菜单按钮个数
40017   invalid button type 不合法的按钮类型
40018   invalid button name size    不合法的按钮名称长度
40019   invalid button key size 不合法的按钮KEY长度
40020   invalid button url size 不合法的url长度
40023   invalid sub button size 不合法的子菜单按钮个数
40024   invalid sub button type 不合法的子菜单类型
40025   invalid sub button name size    不合法的子菜单按钮名称长度
40026   invalid sub button key size 不合法的子菜单按钮KEY长度
40027   invalid sub button url size 不合法的子菜单按钮url长度
40029   invalid code    不合法或已过期的code
40030   invalid refresh_token   不合法的refresh_token
40036   invalid template_id size    不合法的template_id长度
40037   invalid template_id 不合法的template_id
40039   invalid url size    不合法的url长度
40048   invalid url domain  不合法的url域名
40054   invalid sub button url domain   不合法的子菜单按钮url域名
40055   invalid button url domain   不合法的菜单按钮url域名
40066   invalid url 不合法的url
41001   access_token missing    缺失access_token参数
41002   appid missing   缺失appid参数
41003   refresh_token missing   缺失refresh_token参数
41004   appsecret missing   缺失secret参数
41005   media data missing  缺失二进制媒体文件
41006   media_id missing    缺失media_id参数
41007   sub_menu data missing   缺失子菜单数据
41008   missing code    缺失code参数
41009   missing openid  缺失openid参数
41010   missing url 缺失url参数
42001   access_token expired    access_token超时
42002   refresh_token expired   refresh_token超时
42003   code expired    code超时
43001   require GET method  需要使用GET方法请求
43002   require POST method 需要使用POST方法请求
43003   require https   需要使用HTTPS
43004   require subscribe   需要订阅关系
44001   empty media data    空白的二进制数据
44002   empty post data 空白的POST数据
44003   empty news data 空白的news数据
44004   empty content   空白的内容
44005   empty list size 空白的列表
45001   media size out of limit 二进制文件超过限制
45002   content size out of limit   content参数超过限制
45003   title size out of limit title参数超过限制
45004   description size out of limit   description参数超过限制
45005   url size out of limit   url参数长度超过限制
45006   picurl size out of limit    picurl参数超过限制
45007   playtime out of limit   播放时间超过限制(语音为60s最大)
45008   article size out of limit   article参数超过限制
45009   api freq out of limit   接口调动频率超过限制
45010   create menu limit   建立菜单被限制
45011   api limit   频率限制
45012   template size out of limit  模板大小超过限制
45016   can't modify sys group  不能修改默认组
45017   can't set group name too long sys group 修改组名过长
45018   too many group now, no need to add new  组数量过多
50001   api unauthorized    接口未授权 

各平台授权回调map对照

新浪微博

uid 用户id

name (6.2以前用userName)用户名

accessToken (6.2以前用access_token)

RefreshToken(6.2以前用refresh_token)

expiration (6.2以前用expires_in)过期时间

iconurl (6.2以前用icon_url)头像,没有设置头像时为null

注意:如果使用精简版,网页授权没有用户名和头像

微信

openid

uid (6.2以前用unionid)用户id

accessToken (6.2以前用access_token)

RefreshToken(6.2以前用refresh_token)

expiration (6.2以前用expires_in)过期时间

QQ

uid 用户id

openid

accessToken (6.2以前用access_token)

expiration (6.2以前用expires_in)过期时间

人人

uid

accessToken (6.2以前用access_token)

expiration (6.2以前用expires_in)过期时间

access_secret

豆瓣

uid

accessToken (6.2以前用access_token)

expiration (6.2以前用expires_in)过期时间

access_secret

twitter

uid 用户id

accessToken (6.2以前用access_token)

access_token_secret

name (6.2以前用userName)用户名

facebook

uid 用户id

accessToken (6.2以前用access_token)

expiration (6.2以前用expires_in)过期时间

Linkin

accessToken (6.2以前用access_token)

expiration (6.2以前用expires_on)过期时间

用户资料基本信息解析如下

在返回的map中各个信息对应的key值如下

新浪微博:

用户id:uid

accesstoken: accessToken (6.2以前用access_token)

refreshtoken: (6.2以前用refresh_token)

过期时间:expiration (6.2以前用expires_in)

用户名:name(6.2以前用screen_name)

位置:location

头像:iconurl(6.2以前用profile_image_url)

性别:gender

关注数:followers_count

好友数:friends_count

qq:

name:name(6.2以前用screen_name)

用户id(openid):uid

accesstoken: accessToken (6.2以前用access_token)

过期时间:expiration (6.2以前用expires_in)

性别:gender

头像:iconurl(6.2以前用profile_image_url)

是否黄钻:is_yellow_year_vip

黄钻等级:yellow_vip_level

城市:city

省份:province

QQ目前uid暂时无法实现多个应用间打通操作,如需打通请使用unionID字段,该字段需要向QQ平台申请

微信:

微信返回的openID和unionID都可以实现用户标识的需求,二者的区别在于,unionID可以实现同一个开发者账号下的应用之间账号打通的需求 unionid:uid

openid:openid

unionid:unionid

accesstoken: accessToken (6.2以前用access_token)

refreshtoken: refreshtoken: (6.2以前用refresh_token)

过期时间:expiration (6.2以前用expires_in)

name:name(6.2以前用screen_name)

城市:city

省份:prvinice

国家:country

性别:gender

头像:iconurl(6.2以前用profile_image_url)

facebook:

用户id:uid(6.2以前用id)

first_name:first_name

last_name:last_name

middle_name:middle_name

name:name

linkUri:linkUri

头像:iconurl(6.2以前用profilePictureUri)

twitter

uid 用户id

access_token accessToken (6.2以前用access_token)

access_token_secret

name(6.2以前用username)

领英

名:firstName

姓:lastName

头像:iconurl(6.2以前用profile_image_url)

名字:name(6.2以前用screen_name)

头衔:headline

国家代码:location_country_code

uid:uid

所在地:location_name

其它平台配置

以下为其它平台的特殊配置

易信

如前面快速集成文档所示需要像微信一样添加一个回调的Activity,在包名目录下建立一个文件夹yxapi,在这个文件夹中新建一个类

public class YXEntryActivity extends YXCallbackActivity {

}

同时在AndroidManifest中添加对应的配置

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

facebook

facebook需要像前面快速集成文档中写的一样,配置appkey,同时在AndroidManifest中配置:

<activity
        android:name="com.umeng.facebook.FacebookActivity"

android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar" />

    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id" />

其中487692214752558是facebook的appid 这里需要注意,appid一定要存在string文件中,并以facebook_app_id名字进行保存。

twitter

twitter需要像前面快速集成文档中写的一样,配置appkey,同时在AndroidManifest中配置:

        <activity
        android:name="com.umeng.socialize.handler.TwitterWebActivity"
        android:configChanges=
        "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:label="@string/app_name" />

Kakao

KaKao平台除了需要设置appid以外,还需要在AndroidManifest中添加如下代码:

<activity android:name="com.kakao.auth.authorization.authcode.KakaoWebViewActivity"/>

用以保证kakao的正常授权分享

豆瓣、人人、腾讯微博

这个三个平台不需要在代码中设置appkey,jar包放进去就可以使用,但是需要将appkey填写在友盟的后台。

分享面板自定义进阶

关于分享面板,开发者可以根据喜好,对背景颜色,显示位置,字体颜色等进行配置,配置需要使用ShareBoardConfig类,ShareBoardConfig类的使用方式如下:

ShareBoardConfig config = new ShareBoardConfig();//新建ShareBoardConfig               config.setShareboardPostion(ShareBoardConfig.SHAREBOARD_POSITION_CENTER);//设置位置
config.setMenuItemBackgroundShape(ShareBoardConfig.BG_SHAPE_CIRCULAR);
config.setCancelButtonVisibility(true);
shareAction.open(config);//传入分享面板中

具体配置方式如下:

设置分享面板title文本内容

public ShareBoardConfig setTitleText(String title)

设置分享面板title文本颜色

public ShareBoardConfig setTitleTextColor(int color) 

color的int值(不是color的资源id)

设置title是否显示

visibility(true为显示,false为隐藏)

public ShareBoardConfig setTitleVisibility(boolean visibility)

设置item文字的字体颜色

color的int值(不是color的资源id)

ShareBoardConfig setMenuItemTextColor(int color)

设置item图标按下效果颜色

color的int值(不是color的资源id)

    ShareBoardConfig setMenuItemIconPressedColor(int color)

设置item背景颜色

normalColor背景色
color的int值(不是color的资源id)

public ShareBoardConfig setMenuItemBackgroundColor(int normalColor)

设置item背景颜色

normalColor背景色
pressedColor按下时色值
color的int值(不是color的资源id)

public ShareBoardConfig setMenuItemBackgroundColor(int normalColor, int pressedColor)

设置item背景形状

shape 背景形状的type,可选值: 1 ShareBoardConfig.BG_SHAPE_NONE(无背景) 2 ShareBoardConfig.BG_SHAPE_CIRCULAR(圆形) 3 ShareBoardConfig.BG_SHAPE_ROUNDED_SQUARE(圆角方形)

public ShareBoardConfig setMenuItemBackgroundShape(int shape)

设置item背景形状

shape 背景形状的type,可选值: 1 ShareBoardConfig.BG_SHAPE_NONE(无背景) 2 ShareBoardConfig.BG_SHAPE_CIRCULAR(圆形) 3 ShareBoardConfig.BG_SHAPE_ROUNDED_SQUARE(圆角方形)

angle 圆角角度

ShareBoardConfig setMenuItemBackgroundShape(int shape, int angle)

设置指示器的颜色

normalColor未选中的指示器颜色
color的int值(不是color的资源id)

ShareBoardConfig setIndicatorColor(int normalColor)

设置指示器的颜色

normalColor未选中的指示器颜色
selectedColor当前页面指示器的颜色 color的int值(不是color的资源id)

ShareBoardConfig setIndicatorColor(int normalColor, int selectedColor) 

设置指示器的显示状态

ShareBoardConfig setIndicatorVisibility(boolean visibility) 

设置取消按钮的背景色

normalColor背景色
color的int值(不是color的资源id)

ShareBoardConfig setCancelButtonBackground(int normalColor)

设置取消按钮的背景色

normalColor背景色
pressedColor按下时色值
color的int值(不是color的资源id)

ShareBoardConfig setCancelButtonBackground(int normalColor, int pressedColor)

设置取消按钮文本内容

ShareBoardConfig setCancelButtonText(String text)

设置取消按钮文本字体颜色

color字体颜色
color的int值(不是color的资源id)

ShareBoardConfig setCancelButtonTextColor(int color)

设置取消按钮是否显示

visibility(true为显示,false为隐藏)

ShareBoardConfig setCancelButtonVisibility(boolean visibility) 

设置分享面板的背景颜色

color背景颜色
color的int值(不是color的资源id)

ShareBoardConfig setShareboardBackgroundColor(int color)

设置分享面板的位置

position 位置,可选值:

ShareBoardConfig.SHAREBOARD_POSITION_CENTER(居中显示)
ShareBoardConfig.HAREBOARD_POSITION_BOTTOM(底部显示)
ShareBoardConfig setShareboardPostion(int position) 

设置分享面板消失监听

分享面板的关闭监听可以通过这种方式设定:

config.setOnDismissListener(new PopupWindow.OnDismissListener() {
                    @Override
                    public void onDismiss() {

                    }
});

报错必看