注意
1:QQ和QQ Zone SSO(免登录)引用的jar文件相同。当需要同时支持QQ和QQ Zone的时候,只需添加一次SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件即可.
2:由于我们对微信的包名做了修改(libammsdk.jar -> SocialSDK_WeiXin.jar),如出现"Unable to execute dex: Multiple dex files define "问题,请删除libammsdk.jar或者SocialSDK_WeiXin.jar中的一个即可解决问题。
添加资源文件和jar文件有三种方式,请根据您的需求进行选择
方法A:快速集成工具 ( 推荐 )
1:解压SDK下载包,双击运行SDK根目录下的SDKIntegration.jar或者在命令行下输入java -jar SDKIntegration.jar运行集成工具;
2:选择Android工程的根目录,并且填写您的友盟App Key;
3:勾选所需平台和组件,点击"快速集成";
4:检查AndroidManifest.xml、jar文件是否正确。如果集成了QQ或者QZone,请修改相应地appid。如下图所示:
方法B:添加工程引用(升级方便,推荐)
解压SDK压缩包,将文件夹中的social_sdk_library_project文件夹导入Eclipse,并在您的工程中添加对此项目的引用即可。
方法C:添加资源到现有项目中
解压SDK压缩包,将文件夹中的'main/libs'和'main/res'文件夹复制到你的项目工程根目录下(如使用'ADT 17'以下用户需要手动添加'libs'下的jar文件到工程Path中):
Manifest配置,添加友盟Appkey/Activity/权限
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.umeng.soexample"
android:versionCode="1"
android:versionName="1.0" >
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar" >
<activity
android:name="com.umeng.soexample.activity.WelActivity"
android:configChanges="orientation|keyboard"
android:label="@string/app_name"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 友盟AppKey, 需要替换成你自己的 -->
<meta-data
android:name="UMENG_APPKEY"
android:value="4eaee02c527015373b000003" >
</meta-data>
<!-- 4eaee02c527015373b000003 -->
<!-- android:value="52a98cf856240b902211203e" > -->
<!-- ************************* 分享相关的注册 START **************************** -->
<!-- 分享内容编辑页 -->
<activity
android:name="com.umeng.socialize.view.ShareActivity"
android:configChanges="orientation|keyboard"
android:launchMode="singleTask"
android:noHistory="true"
android:theme="@style/Theme.UMDialog"
android:windowSoftInputMode="stateVisible|adjustResize" >
</activity>
<!-- 腾讯SSO授权的Activity注册 -->
<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" />
<!-- 微信回调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 -->
<activity
android:name=".yxapi.YXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 人人SSO授权所需的OAuthActivity -->
<activity
android:name="com.renn.rennsdk.oauth.OAuthActivity"
android:configChanges="orientation|navigation|keyboardHidden" />
<!-- facebook相关 -->
<activity android:name=".activity.FacebookActivity" >
</activity>
<activity
android:name="com.facebook.LoginActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- ************************* 分享相关的注册 END **************************** -->
<!-- 评论相关注册 START -->
<activity
android:name="com.umeng.socialize.view.CommentActivity"
android:configChanges="orientation|keyboard"
android:theme="@style/Theme.UMDefault" >
</activity>
<activity
android:name="com.umeng.socialize.view.CommentDetail"
android:configChanges="orientation|keyboard"
android:noHistory="true"
android:theme="@style/Theme.UMDefault" >
</activity>
<activity
android:name="com.umeng.socialize.view.CommentDetailNoMap"
android:configChanges="orientation|keyboard"
android:noHistory="true"
android:theme="@style/Theme.UMDefault" >
</activity>
<!-- 评论相关注册 End -->
-->
<!-- Socialize Example Activity -->
<activity
android:name=".activity.NavigationActivity"
android:configChanges="orientation|keyboard"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
</activity>
<activity
android:name=".activity.SocialHomeActivity"
android:configChanges="orientation|keyboard"
android:label="@string/app_name" >
</activity>
<activity
android:name=".activity.SwitchActivity"
android:configChanges="orientation|keyboard"
android:label="@string/app_name"
android:launchMode="standard" >
</activity>
<activity
android:name=".activity.CustomPlatformActivity"
android:configChanges="orientation|keyboard"
android:label="@string/umeng_example_home_btn_plus" >
</activity>
<activity
android:name=".activity.ActionBarExampleDetail"
android:configChanges="orientation|keyboard"
android:label="@string/umeng_example_home_btn_plus" >
</activity>
<meta-data
android:name="UMENG_CHANNEL"
android:value="Umeng" >
</meta-data>
<uses-library
android:name="com.google.android.maps"
android:required="false" />
<uses-library android:name="android.test.runner" />
</application>
<!-- instrumentation -->
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.umeng.soexample" />
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="14" />
<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.INTERNET" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- renren sso Permission for Unit Test -->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.SET_DEBUG_APP" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
</manifest>
如果选用多种UmengSDK产品使用不同Appkey,可为SocialSDK配置单独的appkey,如下:
/*代码添加Appkey,如果设置了非null值,SocialSDK将使用该值.*/
SocializeConstants.APPKEY = "xxxxxxxxx";
打开平台选择面板
首先在您的Activity中添加如下成员变量并设置分享内容
// 首先在您的Activity中添加如下成员变量
final UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share");
设置分享内容包括文字、图片及其他多媒体资源、跳转链接
// 设置分享内容
mController.setShareContent("友盟社会化组件(SDK)让移动应用快速整合社交分享功能,http://www.umeng.com/social");
// 设置分享图片, 参数2为图片的url地址
mController.setShareMedia(new UMImage(getActivity(),
"http://www.baidu.com/img/bdlogo.png"));
新浪微博、腾讯微博及豆瓣的跳转链接只能设置在分享文字之中,以http形式传递即可,人人网可以单独设置跳转链接,方法为:
mController.setAppWebSite(SHARE_MEDIA.RENREN, "http://www.umeng.com/social");
分享图片支持本地图片、URL图片,其中本地图片支持绝对路径及资源引用两种方式
设置URL图片方法:
mController.setShareMedia(new UMImage(getActivity(),
"http://www.baidu.com/img/bdlogo.png"));
传递本地图片绝对路径方法:
mController.setShareMedia(new UMImage(getActivity(),
BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));
传递本地图片资源引用方法:
mController.setShareMedia(new UMImage(getActivity(), R.drawable.icon));
分享音乐只支持URL封装的音乐资源,不支持本地音乐
UMusic uMusic = new UMusic("http://music.163.com/song/254270/");
uMusic.setAuthor("GuGu");
uMusic.setTitle("天籁之音");
// 设置音乐缩略图
uMusic.setThumb("http://www.baidu.com/img/bdlogo.png");
mController.setShareMedia(uMusic);
分享视频资源同样只支持URL资源
// 设置分享视频
UMVideo umVideo = new UMVideo(
"http://v.youku.com/v_show/id_XNTE5ODAwMDM2.html?f=19001023");
// 设置视频缩略图
umVideo.setThumb("http://www.baidu.com/img/bdlogo.png");
umVideo.setTitle("友盟社会化分享!");
mController.setShareMedia(umVideo);
给不同的平台设置不同的分享内容,其中不同平台的多媒体、文字内容都可以定制化。当某个平台没有设置定制化的分享内容时, 将会使用默认设置的分享内容。
以下以单独设置腾讯微博分享视频为例:
UMVideo umVideo = new UMVideo(
"http://v.youku.com/v_show/id_XNTc0ODM4OTM2.html");
umVideo.setThumb("http://www.baidu.com/img/bdlogo.png");
umVideo.setTitle("友盟社会化组件视频");
TencentWbShareContent tencentContent = new TencentWbShareContent(umVideo);
// 设置分享到腾讯微博的文字内容
tencentContent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,腾讯微博");
// 设置分享到腾讯微博的多媒体内容
mController.setShareMedia(tencentContent);
其他平台单独设置内容参照上面代码即可,只需替换平台参数名
新浪微博 | SinaShareContent |
腾讯微博 | TencentWbShareContent |
人人网 | RenrenShareContent |
豆瓣 | DoubanShareContent |
TwitterShareContent | |
G+ | GooglePlusShareContent |
// 构建UMImage,参数1为当前的activity 参数2为图片的链接
UMImage shareImage = new UMImage(getActivity(),
"http://www.umeng.com/images/pic/banner_module_social.png");
// 设置图片分享内容,
mController.setShareMedia( shareImage );
设置平台独立的分享内容// 构建UMImage,参数1为当前的activity 参数2为图片的链接
UMImage shareImage = new UMImage(getActivity(),
"http://www.umeng.com/images/pic/banner_module_social.png");
// 设置微信平台的分享内容
// 微信平台的分享内容, 多媒体内容设置为图片, 且只能设置为一种类型
WeiXinShareContent weixinContent = new WeiXinShareContent(shareImage);
weixinContent.setShareContent("来自友盟社会化组件(SDK) 让移动应用快速整合社交分享功能,
微信");
weixinContent.setTitle("友盟社会化分享组件-微信");
mController.setShareMedia(weixinContent);
// 音乐类型
UMusic uMusic = new
UMusic("http://sns.whalecloud.com/test_music.mp3");
uMusic.setAuthor("umeng");
uMusic.setTitle("天籁之音");
uMusic.setThumb(mUMImgBitmap);
//设置QQ平台的分享内容
QQShareContent qqShareContent = new QQShareContent( uMusic );
qqShareContent.setShareContent("来自友盟社会化组件(SDK) 让移动应用快速整合社交分享功能 -
- QQ");
qqShareContent.setTitle("hello, qq");
qqShareContent.setTargetUrl("htp://www.google.com.hk");
mController.setShareMedia(qqShareContent);
人人网分享时,如果不设置website,点击¨应用名称¨或者¨图片¨将跳转到人人网主页;如果设置website将跳转到此website的页面。
新浪微博、腾讯微博及豆瓣的跳转链接只能设置在分享文字之中,以http形式传递即可,人人网可以单独设置跳转链接,方法为:
mController.setAppWebSite(SHARE_MEDIA.RENREN, "http://www.umeng.com/social");
通过某个按钮或其他方法弹出分享面板
mController.getConfig().removePlatform( SHARE_MEDIA.RENREN, SHARE_MEDIA.DOUBAN);
yourShareButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 是否只有已登录用户才能打开分享选择页
mController.openShare(getActivity(), false);
}
});
public void onClick(View v) {
// 点击相关按钮,打开分享面板
if ( v == mUmengSdkButton ) {
mController.openShare(getActivity(), new SnsPostListener() {
@Override
public void onStart() {
//分享开始
}
@Override
public void onComplete(SHARE_MEDIA platform, int eCode, SocializeEntity entity) {
//分享结束, eCode==200代表分享成功,非200代表分享失败
}
});
}
}
验证效果
编译并运行后,点击添加分享功能的View出现如下页面,那么说明你已经集成成功基本的分享功能和平台了!但是,为了使您的用户有更好的分享体验,以及您的应用有更多的分享量,更好地在社交平台上传播,我们建议您按照下面的指引进行SSO(免登录)和新平台的设置。
在程序入口加入**com.umeng.socialize.utils.Log.LOG = true**,可在LogCat中观察友盟日志。