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

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

一,注冊

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

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

链接: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

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

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

    代码分享 代码名称: 仿微信朋友圈发动态功能(相册图片多选) 代码描述: 仿微信朋友圈发动态功能(相册图片多选) 代码托管地址: http://www.apkbus.com/android-15276 ...

  2. Android 仿微信朋友圈添加图片

    github地址(欢迎下载Demo) https://github.com/zhouxu88/WXCircleAddPic 老习惯,先上图,着急用的朋友,直接带走Demo,先拿来用吧,毕竟老板催的紧, ...

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

    本文转载至 http://www.it165.net/pro/html/201503/37101.html Tag标签:第三方   01.#import "UMSocial.h" ...

  4. Android仿微信朋友圈,全文收起功能,附源码

    在众多的社交类软件中,朋友圈是必不可少的,可以与好友.同学等分享自己的日常和有意思的事情,在开发社交类App时,朋友圈发表的内容你不可能让他全部显示,全部显示的话用户体验度会非常不好,这时就要用到全文 ...

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

    PS:我们都知道微信,更是知道朋友圈,很多人在朋友圈里卖起了化妆品,打入广告等为自己做一下推广,里面会附带一写好看的图片,上面有标题,有描述,整体布局每场的美观,那么这是怎么实现的呢,有些人可能会单个 ...

  6. Android 仿微信朋友圈发表图片拖拽和删除功能

    朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...

  7. Android开发 sharesdk分享微信/朋友圈的时候只显示文字,不显示链接

    问题:分享的时候只将分享的content分享出去了,连标题及链接都没有分享出去. 原因:没有配置image导致. 解决办法: 在  showShare 方法里面添加配置: if(ImageUrlOrP ...

  8. Android 仿微信朋友圈拍小视频上传到服务器

    这个接上一个写的实现拍小视频和传到服务器的  界面是这个样子滴. 我也知不知道怎么给图片搞小一点o(╯□╰)o 布局文件是这样的[认真脸] <?xml version="1.0&quo ...

  9. Android 仿微信朋友圈查看

    项目要做一个类似于这样的功能,就做了. 项目下载地址:http://download.csdn.net/detail/u014608640/9917626 一,看下效果: 二.activity类 pu ...

随机推荐

  1. 【MongoDB】The basic operation of Index in MongoDB

    In the past four blogs, we attached importance to the index, including description and comparison wi ...

  2. Qt 图像处理之 灰度变换

    对图像的亮度.对照度进行变换是非经常常使用的一种图像处理操作,可是Qt 本身却没有提供对应的功能代码.因此我写了个简单的类来实现这些操作.我把这个类称为 BrightnessMapper. 代码例如以 ...

  3. Nginx系列(三)--管理进程、多工作进程设计

    Nginx由一个master进程和多个worker进程组成,但master进程或者worker进程中并不会再创建线程. 一.master进程和worker进程的作用 master进程 不须要处理网络事 ...

  4. HttpClient学习系列 -- 学习总结

    jar包: HttpClient 4.x版本 简要介绍 HttpComponents 包括 HttpCore包和HttpClient包 HttpClient:Http的执行http请求 Default ...

  5. 最小生成树基础 (Kruskal)

    最小生成树 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  6. lightshot截图工具的安装及使用

    通常我们做PPT或者写博客难免要用到截图工具,而Windows自带的snippingtool启动有延迟也不够方便,QQ有截屏又需要联网及登录情况下,于是我想着在Chrome上搜一款清新简洁的截屏软件, ...

  7. extjs 与html相结合 自定义

    http://skirtlesden.com/articles/html-and-extjs-components

  8. RTSP/RTP 媒体传输和控制协议

    1 前言 本文档主要描述了 NewStream Vision 系统中前端视频服务器(DVR, 网络摄像机), 中心转发服务器以及客户端之间的多媒体通信以及控制协议. 本协议主要基于标准的 IETE 的 ...

  9. Selenium启动不同浏览器

    1.启动Chrome "webdriver.chrome.driver" System.setProperty("webdriver.chrome.driver" ...

  10. ASP.net 中 OutputCache 指令各个参数的作用

    使用@ OutputCache指令 使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非 ...