友盟分享快速集成--学习记录
来源:互联网 发布:单片机usb供电电路图 编辑:程序博客网 时间:2024/05/17 03:59
1 产品概述
友盟社会化组件,可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。
指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪微博、腾讯微博、人人网分享功能。
注意:本文示例代码均针对最新版SDK,如果你所用SDK的类名或方法名与此文不符合,请使用你所用SDK的随包文档、或者下载使用最新版SDK。
2 获取友盟Appkey
如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它.
如果你尚未在友盟注册开发者账号,需要先注册,注册之后登录你的账号,点击**添加新应用**,填写完应用基本信息后,将进入"下载SDK并添加代码"页面,此页面即可得到Appkey
。
1》注册:http://www.umeng.com/users/sign_up
以上信息,是我随机填写的,目的只是为了说明如何填写各项内容(带星号的为必填内容)。填写完毕后,点击“注册”。
2》注册后,你会收到激活邮件,点击里面的激活链接,即可完成激活。
3》激活后,登录账号并选择“添加新应用”,按照提示填写信息,以便获取Appkey。
记住此Appkey,以便后面使用。
3 下载并安装SDK
3.1 下载SDK最新版
3.2 添加代码和资源引用
jar文件对应列表
平台 jar文件
注意
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中):
3.3 Manifest配置,添加友盟Appkey/Activity/权限
<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.demo.umengdemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- ###################添加UmengAppkey###################### --> <meta-data android:name="UMENG_APPKEY" android:value="在这里添加你自己的Appkey" /> <!-- ###################注册SDK使用的Activity###################### --> <!-- 分享编辑页 --> <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 android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ --> <activity android:name="com.tencent.tauth.AuthActivity" android:configChanges="orientation|keyboard" 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" /><!-- 100424468,如果你使用的公用账号,则不需要修改;否则修改成你在QQ开放平台申请的 APP ID--> <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" /> </application> <!-- ###################声明SDK使用的相关权限###################### --> <!-- 检测网络状态 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取mac地址作为用户的备用唯一标识 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取用户手机的IMEI,用来唯一的标识用户 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 缓存资源优先存入SDcard --> <uses-permission android:name="android.permission.WRITE_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" /></manifest>
如果选用多种UmengSDK产品使用不同Appkey,可为SocialSDK配置单独的appkey,如下:
/*<span style="background-color: rgb(255, 255, 0);">代码添加Appkey</span>,如果设置了非null值,SocialSDK将使用该值.*/SocializeConstants.APPKEY = "xxxxxxxxx";
4 打开平台选择面板
4.1 首先在您的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.umeng.com/images/pic/banner_module_social.png"));// 设置分享图片,参数2为本地图片的资源引用//mController.setShareMedia(new UMImage(getActivity(), R.drawable.icon));// 设置分享图片,参数2为本地图片的路径(绝对路径)//mController.setShareMedia(new UMImage(getActivity(), // BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));// 设置分享音乐//UMusic uMusic = new UMusic("http://sns.whalecloud.com/test_music.mp3");//uMusic.setAuthor("GuGu");//uMusic.setTitle("天籁之音");// 设置音乐缩略图//uMusic.setThumb("http://www.umeng.com/images/pic/banner_module_social.png");//mController.setShareMedia(uMusic);// 设置分享视频//UMVideo umVideo = new UMVideo(// "http://v.youku.com/v_show/id_XNTE5ODAwMDM2.html?f=19001023");// 设置视频缩略图//umVideo.setThumb("http://www.umeng.com/images/pic/banner_module_social.png");//umVideo.setTitle("友盟社会化分享!");//mController.setShareMedia(umVideo);
人人网分享时,如果不设置website,点击¨应用名称¨或者¨图片¨将跳转到人人网主页;如果设置website将跳转到此website的页面。
设置website的方式如下:
mController.setAppWebSite(SHARE_MEDIA.RENREN, "http://www.umeng.com/social");
4.2 通过某个按钮或其他方法弹出分享面板
mController.getConfig().removePlatform( SHARE_MEDIA.RENREN, SHARE_MEDIA.DOUBAN);yourShareButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 是否只有已登录用户才能打开分享选择页 mController.openShare(getActivity(), false); }});
5 验证效果
编译并运行后,点击添加分享功能的View出现如下页面,那么说明你已经集成成功基本的分享功能和平台了!但是,为了使您的用户有更好的分享体验,以及您的应用有更多的分享量,更好地在社交平台上传播,我们建议您按照下面的指引进行SSO(免登录)和新平台的设置。
6 各平台SSO(免登录)配置
6.1 配置SSO授权回调
如果有使用任一平台的SSO授权或者集成了facebook平台, 则必须在对应的activity中实现onActivityResult方法, 并添加如下代码
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); /**使用SSO授权必须添加如下代码 */ UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(requestCode) ; if(ssoHandler != null){ ssoHandler.authorizeCallBack(requestCode, resultCode, data); }<span style="color:#ffffff;">}</span>
下面以分享到QQ和QQ空间为例进行说明
6.3 分享给QQ好友
6.3.1 添加QQ分享所依赖的jar文件
- 解压已下载的zip文件,将platforms/qq_zone/libs目录中SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中。
- 在libs目录中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,鼠标右键-->Add to Build Path。
- 将解压目录中platforms/qq_zone/res文件拷贝至你工程res目录。
- 在AndroidManifest.xml中注册AuthActivity,QQ空间和QQ共用该授权Activity,具体配置参考上文的AndroidManifest.xml文件。
- 请在QQ互联填写签名:移动应用信息->平台信息->apk签名.(签名地址)。
6.3.2 添加如下集成代码
//参数1为当前Activity,参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(getActivity(), "100424468", "c7394704798a158208a74ab60104f0ba");qqSsoHandler.addToSocialSDK();
6.4 SSO(免登录)分享到QQ空间
6.4.1 添加QQ空间所依赖的jar文件跟资源文件
注意在QQ互联填写签名:移动应用信息->平台信息->apk签名。移动应用信息->平台信息->apk签名.(签名地址) 如果已经添加了SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,则不需要再次添加。
1.1 解压已下载的zip文件,将platforms/qq_qzone/libs中 SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中。
1.2 在libs目录中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,鼠标右键-->Add to Build Path。
1.3 将解压目录中platforms/qq_zone/res文件拷贝至你工程res目录。
1.4 在AndroidManifest.xml中注册AuthActivity,QQ空间和QQ共用该授权Activity,具体配置参考上文的AndroidManifest.xml文件。
ps:由于我们选择了A方式添加了SDK ,所以以上四步也可以省略了。可见A方式很方便,所以推荐使用A方式。
6.4.2 在集成代码中添加如下代码
//参数1为当前Activity,参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(getActivity(), "100424468", "c7394704798a158208a74ab60104f0ba");qZoneSsoHandler.addToSocialSDK();
例如我在MainActivity中主要代码如下:
package com.demo.umengdemo;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import com.umeng.socialize.bean.SHARE_MEDIA;import com.umeng.socialize.controller.UMServiceFactory;import com.umeng.socialize.controller.UMSocialService;import com.umeng.socialize.media.UMImage;import com.umeng.socialize.sso.QZoneSsoHandler;import com.umeng.socialize.sso.UMQQSsoHandler;import com.umeng.socialize.sso.UMSsoHandler;public class MainActivity extends ActionBarActivity {// 首先在您的Activity中添加如下成员变量final UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share");//触发分享文字和图片的按钮private Button sharePic;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}private void init() {//初始化控件并添加相应事件sharePic = (Button) findViewById(R.id.sharePic);sharePic.setOnClickListener(myClickListener);}OnClickListener myClickListener = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.sharePic:mController.getConfig().removePlatform(SHARE_MEDIA.RENREN,SHARE_MEDIA.DOUBAN);sharePicClick();break;default:break;}}};private void sharePicClick() {Log.i("CXC", "---sharePicClick");System.out.println("---MainActivity.sharePicClick()");//参数1为当前Activity,参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(this,"100424468", "c7394704798a158208a74ab60104f0ba");qqSsoHandler.addToSocialSDK();QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(this,"100424468", "c7394704798a158208a74ab60104f0ba");qZoneSsoHandler.addToSocialSDK();// 设置分享内容mController.setShareContent("友盟社会化组件(SDK)让移动应用快速整合社交分享功能--cxc,http://www.umeng.com/social");// 设置分享图片,参数2为本地图片的资源引用 mController.setShareMedia(new UMImage(this, R.drawable.ic_launcher));// 是否只有已登录用户才能打开分享选择页mController.openShare(this, false);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);/** 使用SSO授权必须添加如下代码 */UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(requestCode);if (ssoHandler != null) {ssoHandler.authorizeCallBack(requestCode, resultCode, data);}}//其他代码省略了。。。。}
至此,利用友盟快速分享内容到QQ和QQ空间的过程就结束了。
需要注意的地方我在上面都做了标记,看的时候先看一上官网上的操作文档,再结合实际,把代码添加到相应的地方。
想分享内容到更多的平台,比如微信,人人网等可以参考官网文档。
- 友盟分享快速集成--学习记录
- 72.友盟分享快速集成
- Android-->友盟分享/登录快速集成库
- untiy3d 集成友盟 SocialSDK 分享功能 记录
- 快速集成QQ分享
- 友盟分享集成
- 友盟分享集成
- shareSDK社会化分享快速集成
- ios 分享功能 集成友盟分享
- ios 分享功能 集成友盟分享
- 分享功能 集成友盟分享
- Android 友盟统计 友盟推送 友盟分享快速集成
- 集成友盟分享SDK
- 集成友盟社会化分享
- iOS 集成友盟分享
- 集成友盟分享总结
- 友盟分享集成问题
- iOS集成友盟分享
- Add Two Numbers
- 采用execSQL()和rawQuery()方法完成数据的添删改查
- Android之ViewGroup实现可拖动的GridView
- hdu 4790 Just Random题解(数学)
- 用Allinea DDT调试OpenACC代码
- 友盟分享快速集成--学习记录
- wireshark工具应用之简单总结
- Android之实现百度云主界面框架
- sql injection note day01
- mysql_fetch_row 与mysql_fetch_array的区别
- UVA - 1356 Bridge
- mysql数据库 message from server: "Host is not allowed to connect to this MySQL server"解决办法
- [转]Android经典的开源项目
- 反射获取属性和方法