android-友盟第三方登录,及分享的使用
2015-07-31 11:34
796 查看
部分内容转载自 http://blog.csdn.net/wwj_748/article/details/41117173
本文介绍友盟包的使用,以 微信,QQ, 新浪 的第三方登录及分享为例
Demo实例 : http://download.csdn.net/detail/guige_csdn/8948685
一. 首先要有个友盟的帐号
https://www.umeng.com
二.在友盟创建新应用
https://www.umeng.com/apps?interest=social
三. 根据需要下载相应的SDK
http://dev.umeng.com/social/android/sdk-download
四. 安装SDK
https://www.umeng.com/apps?interest=social
1:解压SDK下载包,双击运行SDK根目录下的SDKIntegration.jar或者在命令行下输入java -jar SDKIntegration.jar运行集成工具;
2:选择Android工程的根目录,并且填写您的友盟App Key;
3:勾选所需平台和组件,点击"快速集成";
4:检查AndroidManifest.xml、jar文件是否正确。如果集成了QQ或者QZone,请修改相应地appid。如下图所示:
解压SDK压缩包,将文件夹中的social_sdk_library_project文件夹导入Eclipse,并在您的工程中添加对此项目的引用即可。
解压SDK压缩包,将文件夹中的'main/libs'和'main/res'文件夹复制到你的项目工程根目录下
(如使用'ADT 17'以下用户需要手动添加'libs'下的jar文件到工程BuildPath中):
以上即配置好libs包(若用方法一成功了,则同时完成对anroidManifest.xml的配置)
五. anroidManifest.xml的配置
六. 工程目录
其中WXEntryActivity.java 必须建立
WXEntryActivity.java
七. MainActivity中的内容
初始化友盟服务
其中,新浪微博在分享图片时出错了,不知为何,新浪的jar包要右键BuildPath>>add to Build path
微信的分享是要先去申请开发者平台的应用的,审核通过了才能分享,且微信的第三方登录是要收费的,appkey跟eclipse的签名有关,所以用另一个eclipse编译之后,微信分享可能就用不了了,
相关的链接:
https://open.weixin.qq.com/
工具的下载:https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN
八. 第三方登录流程
以下这张图转自:http://www.cnblogs.com/hooray/archive/2012/11/17/2774499.html
本人写的Demo实例 : http://download.csdn.net/detail/guige_csdn/8948685
本文介绍友盟包的使用,以 微信,QQ, 新浪 的第三方登录及分享为例
Demo实例 : http://download.csdn.net/detail/guige_csdn/8948685
一. 首先要有个友盟的帐号
https://www.umeng.com
二.在友盟创建新应用
https://www.umeng.com/apps?interest=social
三. 根据需要下载相应的SDK
http://dev.umeng.com/social/android/sdk-download
四. 安装SDK
https://www.umeng.com/apps?interest=social
方法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文件到工程BuildPath中):
SDK压缩包目录 |
五. anroidManifest.xml的配置
<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.umengsharetestyjq" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <!-- ###################声明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" /> <!-- QQ、QQ空间所需权限 --> <uses-permission android:name="android.permission.GET_TASKS" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.umengsharetestyjq.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> <!-- 分享编辑页 --> <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> <!-- ############ QQ空间和QQ 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" /> <!-- 100424468,如果你使用的公用账号,则不需要修改;否则修改成你在QQ开放平台申请的 APP ID --> <data android:scheme="tencent100424468" /> </intent-filter> </activity> <activity android:name="com.tencent.plus.ImageActivity" > </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" > </activity> <!-- 友盟的appkey --> <meta-data android:name="UMENG_APPKEY" android:value="55b98dac67e58e07a1005262" /> </application> </manifest>
六. 工程目录
其中WXEntryActivity.java 必须建立
WXEntryActivity.java
package com.example.wxapi; import com.umeng.socialize.weixin.view.WXCallbackActivity; public class WXEntryActivity extends WXCallbackActivity { }
七. MainActivity中的内容
初始化友盟服务
// 友盟分享的服务 private UMSocialService controller = null;
/** * 初始化与友盟分享SDK的信息 */ private void initShareConfig() { // context = this; controller = UMServiceFactory.getUMSocialService("com.umeng.share"); // // 设置分享的内容 // controller // .setShareContent("在这里设置要分享的内容"); // // // 设置分享的图片 // String imageUrl = // "http://img3.imgtn.bdimg.com/it/u=67026920,1094670043&fm=21&gp=0.jpg"; // controller.setShareMedia(new UMImage(context, imageUrl)); // SocializeConfig config = controller.getConfig(); // 开通短信分享 // config.setShareSms(true); // 开通Email分享 // config.setShareMail(true); // config.setPlatforms(SHARE_MEDIA.QZONE, SHARE_MEDIA.TENCENT); // 微信平台的appID,要进行申请,跟eclipse的签名有关 String appID = "wx8d6b7769a63ae29a"; String appSecret = "49cabb635da062be492eeb83099530ca"; // 添加微信平台 UMWXHandler wxHandler = new UMWXHandler(this, appID, appSecret); wxHandler.addToSocialSDK(); // 添加微信朋友圈 UMWXHandler wxCircleHandler = new UMWXHandler(this, appID, appSecret); wxCircleHandler.setToCircle(true); wxCircleHandler.addToSocialSDK(); // 添加QQ分享平台 UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(this, "100424468", "c7394704798a158208a74ab60104f0ba"); qqSsoHandler.addToSocialSDK(); // 添加QQ空间分享平台 QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(this, "100424468", "c7394704798a158208a74ab60104f0ba"); qZoneSsoHandler.addToSocialSDK(); // 新浪微博需要去申请授权后才能使用 // 设置新浪SSO handler controller.getConfig().setSsoHandler(new SinaSsoHandler(this)); // 设置腾讯微博SSO handler controller.getConfig().setSsoHandler(new TencentWBSsoHandler()); }
/** * 根据不同的平台设置不同的分享内容</br> */ private void setShareContent() { // 图片分享 UMImage localImage = new UMImage(this, R.drawable.ic_launcher); UMImage urlImage = new UMImage(this, "http://www.umeng.com/images/pic/social/integrated_3.png"); // UMImage resImage = new UMImage(LoginActivity.this, R.drawable.icon); // 视频分享 UMVideo video = new UMVideo( "http://v.youku.com/v_show/id_XNTc0ODM4OTM2.html"); // vedio.setThumb("http://www.umeng.com/images/pic/home/social/img-1.png"); video.setTitle("友盟社会化组件视频"); video.setThumb(urlImage); video.setThumb(new UMImage(this, BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher))); // 音乐分享 UMusic uMusic = new UMusic( "http://music.huoxing.com/upload/20130330/1364651263157_1085.mp3"); uMusic.setAuthor("umeng"); uMusic.setTitle("天籁之音"); uMusic.setThumb(urlImage); // uMusic.setThumb("http://www.umeng.com/images/pic/social/chart_1.png"); // 分享到微信好友的内容 WeiXinShareContent weixinContent = new WeiXinShareContent(); weixinContent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,微信"); weixinContent.setTitle("友盟社会化分享组件-微信"); weixinContent.setTargetUrl("http://www.umeng.com"); weixinContent.setShareMedia(urlImage); controller.setShareMedia(weixinContent); // 设置朋友圈分享的内容 CircleShareContent circleMedia = new CircleShareContent(); circleMedia.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,朋友圈"); circleMedia.setTitle("友盟社会化分享组件-朋友圈"); circleMedia.setShareImage(urlImage); // circleMedia.setShareMedia(uMusic); // circleMedia.setShareMedia(video); circleMedia.setTargetUrl("http://www.umeng.com"); controller.setShareMedia(circleMedia); UMImage qzoneImage = new UMImage(this, "http://www.umeng.com/images/pic/social/integrated_3.png"); qzoneImage .setTargetUrl("http://www.umeng.com/images/pic/social/integrated_3.png"); // 设置QQ空间分享内容 QZoneShareContent qzone = new QZoneShareContent(); qzone.setShareContent("这里是分享的内容"); qzone.setTargetUrl("http://www.baidu.com"); qzone.setTitle("这里是分享的标题"); qzone.setShareImage(urlImage); controller.setShareMedia(qzone); // 设置QQ 分享内容 QQShareContent qqShareContent = new QQShareContent(); qqShareContent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能 -- QQ"); qqShareContent.setTitle("hello, title"); qqShareContent.setShareImage(urlImage); // qqShareContent.setShareMusic(uMusic); // qqShareContent.setShareVideo(video); qqShareContent.setTargetUrl("http://www.umeng.com/social"); controller.setShareMedia(qqShareContent); // 视频分享 UMVideo umVideo = new UMVideo( "http://v.youku.com/v_show/id_XNTc0ODM4OTM2.html"); umVideo.setThumb("http://www.umeng.com/images/pic/home/social/img-1.png"); umVideo.setTitle("友盟社会化组件视频"); // 腾讯微博分享的内容 TencentWbShareContent tencent = new TencentWbShareContent(); tencent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,腾讯微博"); // 设置tencent分享内容 controller.setShareMedia(tencent); // // 设置邮件分享内容, 如果需要分享图片则只支持本地图片 // MailShareContent mail = new MailShareContent(localImage); // mail.setTitle("share form umeng social sdk"); // mail.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,email"); // // 设置mail分享内容 // controller.setShareMedia(mail); // // 设置短信分享内容 // SmsShareContent sms = new SmsShareContent(); // sms.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,短信"); // sms.setShareImage(urlImage); // controller.setShareMedia(sms); // 新浪微博分享的内容 SinaShareContent sinaContent = new SinaShareContent(); sinaContent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,新浪微博"); // sinaContent.setShareImage(new UMImage( this, // R.drawable.actionbar_back_indicator)); controller.setShareMedia(sinaContent); }
其中,新浪微博在分享图片时出错了,不知为何,新浪的jar包要右键BuildPath>>add to Build path
微信的分享是要先去申请开发者平台的应用的,审核通过了才能分享,且微信的第三方登录是要收费的,appkey跟eclipse的签名有关,所以用另一个eclipse编译之后,微信分享可能就用不了了,
相关的链接:
https://open.weixin.qq.com/
工具的下载:https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN
八. 第三方登录流程
以下这张图转自:http://www.cnblogs.com/hooray/archive/2012/11/17/2774499.html
本人写的Demo实例 : http://download.csdn.net/detail/guige_csdn/8948685
相关文章推荐
- 说说Android应用的persistent属性
- Android NDK *** could not be resolved
- android studion Gradle多渠道打包
- 图解Android应用程序构建原理
- Android开发笔记---service的简单使用
- Android-倒计时工具类
- Android端与Java服务端交互——SocketIO
- 解读Android虚拟机工作原理
- android studio Gradle基础
- 深入分析Android系统中SparseArray的源码
- android开源框架(开始开发的时候参考)
- Android性能优化之一:ViewStub
- Android Studio中使用git功能无法clone原因分析
- Android属性动画完全解析(上),初识属性动画的基本用法
- 获取安卓手机设备信息(cpu,手机内存,SD卡,运行内存,mac和开机时间)
- Android之——Surface、SurfaceView与SurfaceHolder.Callback初探
- android杂记5:Android Support Library
- android:button点击
- 自定义viewgroup 继承 FrameLayout 仿QQ侧滑菜单
- Android 记录和恢复ListView滚动的位置的三种方法