您的位置:首页 > 移动开发 > Android开发

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


方法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压缩包目录
以上即配置好libs包(若用方法一成功了,则同时完成对anroidManifest.xml的配置)

五. 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: