社会化分享是眼下必学且火热的功能。之前有写第三方登录,那仅仅是社会化分享的一部分。今天来玩玩分享微信朋友圈。
为了方便操作,还是依照步骤写。
一,注冊
注冊应用已经在这里具体说明过了,这里就不多提了。
二,在微信开放平台中授权开发人员身份,以及注冊应用
链接: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
来源: http://www.bubuko.com/infodetail-2129372.html