android-友盟第三方登录,及分享的使用

本文详细介绍了如何在Android应用中集成友盟的第三方登录(微信、QQ、新浪)和分享功能。提供了三种集成方法:快速集成工具、添加工程引用和手动添加资源。在集成过程中需要注意AndroidManifest.xml的配置,例如创建WXEntryActivity.java。同时,文章指出微信分享和登录需在开发者平台注册并申请权限,且微信登录可能涉及费用。作者提供了Demo实例供参考。
摘要由CSDN通过智能技术生成

部分内容转载自 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);

	}




 

其中,新浪微博在分享图片时出错了,发现分享图片是要另外申请权限的,错误代码列表:

http://open.weibo.com/wiki/Error_code


微信的分享是要先去申请开发者平台的应用的,审核通过了才能分享,且微信的第三方登录是要收费的,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


  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值