1. 程式人生 > >試用友盟SDK實現Android分享微信朋友圈

試用友盟SDK實現Android分享微信朋友圈

社會 mis gettext 視頻 blog test cte widget mod

社會化分享是眼下必學且火熱的功能。之前有寫第三方登錄,那僅僅是社會化分享的一部分。今天來玩玩分享微信朋友圈。

為了方便操作,還是依照步驟寫。

一,註冊

註冊應用已經在這裏具體說明過了,這裏就不多提了。


二,在微信開放平臺中授權開發人員身份,以及註冊應用

鏈接: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分享微信朋友圈