- 浏览: 510131 次
文章分类
最新评论
移动共享开发(一)基本配置
注意
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中观察友盟日志。
相关推荐
- 在IOS项目开发中使用单例 类共享应用配置信息 - 基 于 xib 的 tableViewCell 的个性化定制 - 一种让UILabel自适应内容 大小的方法 3 刊首语 这是一个颠覆的时代,移动互联网正改变着我们 的生活方式,也改变...
XE6移动开发环境搭建之IOS篇(3):配置虚拟机,设置Mac安装环境(有图有真相) 27 XE6移动开发环境搭建之IOS篇(4):VMware9里安装Mac OSX 10.8(有图有真相) 52 XE6移动开发环境搭建之IOS篇(5):解决Windows和...
常用服务器、数据库、中间件安全配置基线 - 基本包括了所有的操作系统、数据库、中间件、网络设备、浏览器,安卓、IOS、云的安全配置 For benchmarks.cisecurity.org. 软件开发设计:PHP、QT、应用软件开发、系统...
前端工程化:创建项目,自动开发生成脚手架、webpack配置文件;开发完成后构建项目,进行压缩合并,并行生产环境和开发环境,构建前后端分离的中间层mock接口服务。集成vue,react等单页面spa环境以及集成jquery为...
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
单片机设计,工具源码,...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
SAC07GSA是上海琅铭电子科技有限公司开发针对共享经济和远程工业控制的GPRS远程继电器,提供了简单实用的配置工具,跳过了硬件复杂知识,纯软件人员也很容易上手使用这款控制开关
timePHP是一个基于php cli开发的定时脚本框架,可以实现简单的配置,自己的逻辑代码纯php无需写shell脚本 易管理,易开发,支持自定义多进程,时间周期可以按(月日,星期几,天,小时,分钟,秒)来执行,等功能。 简单的配置...
Veitool 是一款PHP开发的框架系统,基于ThinkPHP8.x + Layui2.9.x架构,拥有完善的菜单、角色、权限管理机制,集成了常用的管理构建模块,用户可快速便捷的在此基础上进行二次开发、配置、扩展功能,以及可通过安装...
软件开发设计:PHP、QT、...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
“phoenix” 是一个灵活可配置的开源监控平台,主要用于监控应用程序、服务器、数据库、网络、tcp端口和http接口,通过实时收集、汇聚和分析监控信息,实现在发现异常时立刻推送告警信息,并且提供了可视化系统进行...
2.2.1 安装JDK和配置Java开发 环境 2.2.2 Eclipse的安装与汉化 2.2.3 SDK和ADT的安装和 配置 2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 ...
软件开发设计:PHP、QT、...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...
android系统下,封装X5...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
软件开发设计:PHP、QT、...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发Node.js、C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...
精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会游戏软件分会(CGIA)认证及国际游戏开发教育联合会国际认证。曾经领导和参与...
软件开发设计:PHP、QT、...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
2.2.1 安装JDK和配置Java开发 环境 2.2.2 Eclipse的安装与汉化 2.2.3 SDK和ADT的安装和 配置 2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及...