试用友盟SDK实现Android分享微信朋友圈

社会化分享是眼下必学且火热的功能。之前有写第三方登录,那仅仅是社会化分享的一部分。今天来玩玩分享微信朋友圈。

为了方便操作,还是依照步骤写。

一,注冊

注冊应用已经在这里具体说明过了,这里就不多提了。

二,在微信开放平台中授权开发人员身份,以及注冊应用

链接:https://open.weixin.qq.com/ 进入管理中心 提交个人(公司)资料注冊开发人员信息(须要审核等待)。通过后再创建移动应用(确保Package和Appname的一致性)之后拿到应用的AppId和Appsecret

三,開始集成

下载友盟SDK:http://dev.umeng.com/social/android/sdk-download 选择须要用到的平台以及导入方式 然后将Lib导入项目(也能够通过SDKIntegration.jar生成Lib)

接着在AndroidManifest.xml中注冊例如以下信息:

  <!-- 友盟Appkey -->
 <meta-data
            android:name="UMENG_APPKEY"
            android:value="55ab020d67e58e8404004fe6" />

        <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="com.dengyy.demos_dyy.wxapi.WXEntryActivity"
		   android:theme="@android:style/Theme.Translucent.NoTitleBar"
		   android:configChanges="keyboardHidden|orientation|screenSize"
		   android:exported="true"
		   android:screenOrientation="portrait" />    

增加权限:

   <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 -->
    <!-- QQ、QQ空间所需权限 -->
    <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" />

之后在Activity

		// 首先在您的Activity中加入例如以下成员变量
		mController = UMServiceFactory.getUMSocialService("com.umeng.share");
		// 设置分享内容
		mController.setShareContent(content_et.getText().toString());
		// 设置分享图片, 參数2为图片的url地址
		mController.setShareMedia(new UMImage(SocialSharingActivity.this,R.drawable.ic_launcher));

		mController.setShareBoardListener(new UMShareBoardListener() {

			@Override
			public void onShow() {
				isShow = true;
			}

			@Override
			public void onDismiss() {
				isShow = false;
			}
		});

		// 设置分享图片,參数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);

		initWeiXin();
		initWeiXinPY();

initWeiXin和initWeiXinPY方法:

/**
	 * 微信支持纯文字,纯图片(点击查看大图)。图文,音乐。视频分享。

SSO设置
	 */
	private void initWeiXin() {
		String appID = "你在微信开放平台注冊应用id";
		String appSecret = "你在微信开放平台注冊应用Secret";
		// 加入微信平台
		UMWXHandler wxHandler = new UMWXHandler(SocialSharingActivity.this, appID, appSecret);
		// 设置Title
		wxHandler.setTitle("title!");
		// 设置分享内容
		mController.setShareContent(content_et.getText().toString());
		// 设置URL
		wxHandler.setTargetUrl("http://weixin.qq.com/");
		wxHandler.addToSocialSDK();
	}

	/**
	 * 朋友圈支持纯文字,纯图片(点击查看大图)。图文,音乐。视频分享。SSO设置
	 */
	private void initWeiXinPY() {
		String appID = "你在微信开放平台注冊应用id";
		String appSecret = "你在微信开放平台注冊应用Secret";
		// 加入微信朋友圈
		UMWXHandler wxCircleHandler = new UMWXHandler(SocialSharingActivity.this, appID, appSecret);
		// 设置Title
		wxCircleHandler.setTitle("title!");
		// 设置分享内容
		mController.setShareContent(content_et.getText().toString());
		// 设置URL
		wxCircleHandler.setTargetUrl("http://weixin.qq.com/");
		wxCircleHandler.setToCircle(true);
		wxCircleHandler.addToSocialSDK();
	}

打开分享选项页:

  // 是否仅仅有已登录用户才干打开分享选择页
  mController.openShare(SocialSharingActivity.this, false);

设置分享回调:

@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);
		}
	}

为了方便理解,我将整个activity代码贴出来:

package com.dengyy.demos_dyy.social_sharing_demo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;

import com.dengyy.demos_dyy.R;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.controller.UMServiceFactory;
import com.umeng.socialize.controller.UMSocialService;
import com.umeng.socialize.controller.listener.SocializeListeners.UMShareBoardListener;
import com.umeng.socialize.media.QQShareContent;
import com.umeng.socialize.media.QZoneShareContent;
import com.umeng.socialize.media.UMImage;
import com.umeng.socialize.sso.QZoneSsoHandler;
import com.umeng.socialize.sso.SinaSsoHandler;
import com.umeng.socialize.sso.TencentWBSsoHandler;
import com.umeng.socialize.sso.UMQQSsoHandler;
import com.umeng.socialize.sso.UMSsoHandler;
import com.umeng.socialize.weixin.controller.UMWXHandler;

/**
 * Created by dyy on 2015/7/18.
 */
public class SocialSharingActivity extends Activity {

	private Button go_btn;

	private EditText content_et;

	private UMSocialService mController;

	private boolean isShow;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.social_sharing_activity);

		go_btn = (Button) findViewById(R.id.go_btn);
		content_et = (EditText) findViewById(R.id.content_et);

		initData();

		mController.getConfig().removePlatform(SHARE_MEDIA.RENREN, SHARE_MEDIA.DOUBAN);
		go_btn.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {

				// 是否仅仅有已登录用户才干打开分享选择页
				mController.openShare(SocialSharingActivity.this, false);

			}
		});
	}

	private void initData() {

		// 首先在您的Activity中加入例如以下成员变量
		mController = UMServiceFactory.getUMSocialService("com.umeng.share");
		// 设置分享内容
		mController.setShareContent(content_et.getText().toString());
		// 设置分享图片, 參数2为图片的url地址
		mController.setShareMedia(new UMImage(SocialSharingActivity.this,R.drawable.ic_launcher));

		mController.setShareBoardListener(new UMShareBoardListener() {

			@Override
			public void onShow() {
				isShow = true;
			}

			@Override
			public void onDismiss() {
				isShow = false;
			}
		});

		// 设置分享图片,參数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);

		initWeiXin();
		initWeiXinPY();
		initQQ();
		initQQZone();

	}

	//隐藏分享面板
//	public boolean onKeyDown(int keyCode, KeyEvent event) {
//		if(isShow && keyCode == KeyEvent.KEYCODE_BACK){
//			mController.dismissShareBoard();
//			return true;
//		}
//		return isShow;
//	}

	/**
	 * 微信支持纯文字。纯图片(点击查看大图)。图文,音乐。视频分享。SSO设置
	 */
	private void initWeiXin() {
		String appID = "appID";
		String appSecret = "appSecret";
		// 加入微信平台
		UMWXHandler wxHandler = new UMWXHandler(SocialSharingActivity.this, appID, appSecret);
		// 设置Title
		wxHandler.setTitle("title!");
		// 设置分享内容
		mController.setShareContent(content_et.getText().toString());
		// 设置URL
		wxHandler.setTargetUrl("http://weixin.qq.com/");
		wxHandler.addToSocialSDK();
	}

	/**
	 * 朋友圈支持纯文字,纯图片(点击查看大图),图文,音乐。视频分享。

SSO设置
	 */
	private void initWeiXinPY() {
		String appID = "appID";
		String appSecret = "appSecret";
		// 加入微信朋友圈
		UMWXHandler wxCircleHandler = new UMWXHandler(SocialSharingActivity.this, appID, appSecret);
		// 设置Title
		wxCircleHandler.setTitle("title!");
		// 设置分享内容
		mController.setShareContent(content_et.getText().toString());
		// 设置URL
		wxCircleHandler.setTargetUrl("http://weixin.qq.com/");
		wxCircleHandler.setToCircle(true);
		wxCircleHandler.addToSocialSDK();
	}

	/**
	 * QQ SSO设置
	 */
	private void initQQ() {

		// 參数1为当前Activity,參数2为开发人员在QQ互联申请的APP ID,參数3为开发人员在QQ互联申请的APP kEY.
		UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(SocialSharingActivity.this, "APP ID", "APP kEY");
		qqSsoHandler.addToSocialSDK();

		QQShareContent qqShareContent = new QQShareContent();
		qqShareContent.setShareContent(content_et.getText().toString());
		qqShareContent.setTitle("title!");
		qqShareContent.setShareImage(new UMImage(SocialSharingActivity.this, R.drawable.ic_launcher));
		qqShareContent.setTargetUrl("http://www.qq.com/");
		mController.setShareMedia(qqShareContent);

	}

	/**
	 * QQ空间SSO设置
	 */
	private void initQQZone() {

		// 參数1为当前Activity。參数2为开发人员在QQ互联申请的APP ID。參数3为开发人员在QQ互联申请的APP kEY.
		QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(SocialSharingActivity.this, "APP ID", "APP kEY");
		qZoneSsoHandler.setTargetUrl("http://www.qq.com/");
		qZoneSsoHandler.addToSocialSDK();

		QZoneShareContent QZoneShareContent = new QZoneShareContent();
		QZoneShareContent.setTitle("title!");
		QZoneShareContent.setShareContent(content_et.getText().toString());
		QZoneShareContent.setShareImage(new UMImage(SocialSharingActivity.this, R.drawable.ic_launcher));
		QZoneShareContent.setTargetUrl("http://www.qq.com/");
		mController.setShareMedia(QZoneShareContent);

	}

	/**
	 * 新浪微博SSO设置
	 */
	private void initSina() {
		// 设置新浪SSO handler
		mController.getConfig().setSsoHandler(new SinaSsoHandler());
	}

	/**
	 * 腾讯微博SSO设置
	 */
	private void initTentenWB() {
		// 设置腾讯微博SSO handler
		mController.getConfig().setSsoHandler(new TencentWBSsoHandler());
	}

	@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);
		}
	}
}

到了这里,基本通过友盟SDK实现了社会化分享功能。

执行效果:http://wap.youshixiu.com/video/play/198492

假设想知道关于新浪微博,人人网等其它渠道分享和登录的话。能够查阅友盟官方文档:http://dev.umeng.com/social/android/quick-integration

时间: 2024-10-11 17:36:08

试用友盟SDK实现Android分享微信朋友圈的相关文章

试用友盟SDK实现Android第三方登录(以QQ登录为例)

虽然自己在日常工作中用不到第三方登录,但是它的重要性无可厚非. 废话不多说,接下来跟着步骤走,轻松集成第三方登陆. 一,在友盟注册应用 注册好友盟账户后,在http://www.umeng.com/social 中注册自己的应用 拿到友盟Appkey(记得先创建项目,在注册时package别弄错了...) 二,在腾讯开放平台中注册开发者信息,并注册应用 链接:http://open.qq.com/ 进入后点击移动应用 提交个人(公司)资料注册开发者信息(需要审核等待),通过后再创建移动应用(这里

Android 仿微信朋友圈发动态功能(相册图片多选)

代码分享 代码名称: 仿微信朋友圈发动态功能(相册图片多选) 代码描述: 仿微信朋友圈发动态功能(相册图片多选) 代码托管地址: http://www.apkbus.com/android-152760-1-1.html 代码作者: 楼主 代码效果图: 本帖最后由 ^.^ 于 2014-7-8 16:23 编辑 <ignore_js_op> <ignore_js_op> <ignore_js_op> DEMO一共13个类 大约2000行代码,童鞋们耐心点看基本思路是:1

iOS:友盟SDK第三方登录 分享及友盟统计的使用

本文转载至 http://www.it165.net/pro/html/201503/37101.html Tag标签:第三方 view sourceprint? 01.#import "UMSocial.h" 02.#import "UMSocialWechatHandler.h" 03.#import "UMSocialQQHandler.h" 04.#import "UMSocialSinaHandler.h" 05.

Android之微信朋友圈UI实现--ExpandableListView+GridView

PS:我们都知道微信,更是知道朋友圈,很多人在朋友圈里卖起了化妆品,打入广告等为自己做一下推广,里面会附带一写好看的图片,上面有标题,有描述,整体布局每场的美观,那么这是怎么实现的呢,有些人可能会单个使用ListView,也会使用GridView,那么listview嵌套gridview你使用过吗,现在先看一张图, 这张图是不是很熟悉,没错这个就是朋友圈,里面有一个,里面的布局我都画出来了,我不知道微信具体怎么实现的,但是我们会用安卓原生的方法去实现这样的布局,并有实实在在的数据. 思路: 首页

友盟SDK实现分享

友盟SDK文档已经写得很详细了,这边整理笔记,先过一遍流程: 1??注册友盟账号以获取Appkey,下面以分享到微信为例 2??申请第三方账号是因为要进行分享.授权这样的操作肯定是要通过第三方的审核(这样来源可以显示成自己App的icon).如果只是做个demo的话友盟提供了一些平台的测试账号: 3??适配iOS9系统做了几个处理,解决“您的设备未安装微信”的问题 4??下载并安装SDK,可以上代码了 1.在 AppDelegate文件内设置你的AppKey 2.配置第三方APPID#impor

iOS:友盟SDK分享

友盟SDK分享 基本步骤: 1.注册友盟开发者账号 2.登陆账号,添加新应用,获取AppKey 3.下载并安装SDK 4.解压SDK压缩包,将形如UMSocial_sdk_x.x.x文件拖入工程中 例如:UMSocial_Sdk_4.4 5.项目面板中手动添加系统库SystemConfiguration.framework 注意:       1)添加SDK后需要手动添加系统库SystemConfiguration.framework 2) 若你的工程设置了all_load,需要添加手机QQ S

集成友盟SDK后,实现自定义分享的关键代码

//直接分享内容到新浪 ,不用弹出编辑界面 [[UMSocialDataService defaultDataService] setSocialData:[UMSocialData defaultData]]; UMSocialUrlResource *urlResource = [[UMSocialUrlResource alloc] initWithSnsResourceType:UMSocialUrlResourceTypeImage url: _detailModel.productI

微信朋友圈如何同时分享(图片+文字) Android版

以下是:微信朋友圈SDK 分享图片的代码,但只能分享图片,不能分享文字,如何才能图片和文字同时分享?求各位大神指教! public class MainActivity extends Activity {     private static final int THUMB_SIZE = 150;     private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().getAbsolute

Android实现分享内容到微信朋友圈

原文地址:http://yanwushu.sinaapp.com/android_wechat_share/ 由于需求,要实现在应用中实现分享文字+图片到微信朋友圈.在网上找了一些资料,总结如下: 思路 1.使用android的intent实现应用程序之间的通信,将信息通过intent传递给微信(文章后面资源链接中有案例).这种方式的局限性在于 a.只能发送图片,而不是(文字或者图片+文字). b.设备必须安装微信才能实现分享. 2.使用微信的官方sdk包,实现发送文字+图片发送到朋友圈.这种方