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

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

一,注冊

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

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

链接: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. Ambari-单步创建cluster

    Ambari-单步创建 总体介绍 单步创建集群即对于集群内每个服务的安装.开启.组成服务的每个组件host信息的设置等操作都进行一次ambari-server的restAPI的调用. 这样做提高了对集 ...

  2. tcMalloc 配置和优化 nginx 高性能

    tcMalloc优化nginx  记住:nginx一定要先启动 1>下载安装libunwind: #wget  http://download.savannah.gnu.org/releases ...

  3. 源码高速定位工具-qwandry

    https://github.com/adamsanderson/qwandry qwandry 能高速定位到我们须要找到 库文件, 项目 的工具. Ruby中实现高速定位的方法有好多种.我知道的有三 ...

  4. intellij idea 运行jedis

    到这里下载 http://mvnrepository.com/ jar包! 将jar包放入项目目录中,并引入! 引入包到项目中!创建对象! package com.company; import re ...

  5. Swift - 判断是否有某功能访问权限,没有则提示,并自动跳转到设置页

    由于 iOS 系统的安全限制,App 如果需要访问设备的通讯录.麦克风. 相册. 相机.地理位置等时,需要请求用户是否允许访问.   有时用户不小心点了“不允许”,后面可能就不知道要去哪里再开启这个权 ...

  6. DBS-Oracle:表的连接查询

    ylbtech-DBS-Oracle:表的连接查询 链接查询是指基于两个或两个以上表或试图的查询.在实际应用中,查询单个表可能无法满足应用程序的实际需求(例如显示雇员的部门名称以及雇员名),在这种情况 ...

  7. 在Ubuntu Server下搭建LAMP环境

    1 LAMP的安装 LAMP通常是指Linux+Apache+MySQL+PHP组合形成的一套可以运行PHP程序的体系,并不是一个软件的名称.没有安装MySQL的服务器依然可以在其它条件完备的情况下运 ...

  8. js数组及数组对象的遍历

    一 数组遍历 方法一:for循环 方法二:forEach遍历 forEach遍历数组 性能低于for循环,且不可使用break中断循环,也不能使用return返回外层函数 arr.forEach(fu ...

  9. less使用方法总结

    1 变量 我们常常在 CSS 中 看到同一个值重复多次,这样难易于代码维护. 理想状态,应是下面这样: const bgColor="skyblue"; $(".post ...

  10. node.js流复制文件

    转自:http://segmentfault.com/a/1190000000519006 nodejs的fs模块并没有提供一个copy的方法,但我们可以很容易的实现一个,比如: var source ...