1. 程式人生 > >Umeng微信、朋友圈分享

Umeng微信、朋友圈分享

1.註冊友盟賬號,新增新應用,獲取APPKEY.

2.下載最新的分享sdk   http://dev.umeng.com/social/android/quick-integration

3.將main和platforms裡面的jar包和資原始檔 放入新建    的程式中。

放好後如下圖:


4.在清單檔案AndroidMainfest.xml中新增如下程式碼:

    <!-- ###################宣告SDK使用的相關許可權###################### -->
    <!-- 檢測網路狀態 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 獲取mac地址作為使用者的備用唯一標識 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 獲取使用者手機的IMEI,用來唯一的標識使用者 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 快取資源優先存入SDcard -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 允許應用程式聯網,以便向我們的伺服器端傳送資料 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- QQ、QQ空間所需許可權 -->
    <uses-permission android:name="android.permission.GET_TASKS" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.wxshare.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- ###################註冊SDK使用的Activity###################### -->
        <!-- 分享編輯頁 -->
        <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>

        <!-- ############ QQ空間和QQ SSO授權的Activity註冊 ############ -->
        <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <!-- 100424468,如果你使用的公用賬號,則不需要修改;否則修改成你在QQ開放平臺申請的 APP ID -->
                <data android:scheme="tencent100424468" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" >
        </activity>

        <!-- ###################新增UmengAppkey###################### -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="你的友盟appkey" >
        </meta-data>

    </application>
5.在mainActivity的oncreate中新增如下方法
	private void umengShareInit() {
		//0.微信分享步驟
		//1.首先在您的Activity中新增如下成員變數
		mController = UMServiceFactory.getUMSocialService("com.umeng.share");
		//2.wx967daebe835fbeac是你在微信開發平臺註冊應用的AppID, 這裡需要替換成你註冊的AppID
		appId = "<span style="font-family: Arial, Helvetica, sans-serif;">微信開發平臺註冊應用的AppID</span>";
		appSecret = "微信開發平臺的appSecret";

		//3.新增支援微信平臺
		UMWXHandler wxHandler = new UMWXHandler(this,appId,appSecret);
		wxHandler.addToSocialSDK();

		//3.1支援微信朋友圈
		UMWXHandler wxCircleHandler = new UMWXHandler(this,appId,appSecret);
		wxCircleHandler.setToCircle(true);
		wxCircleHandler.addToSocialSDK();
	}

6.友盟分享的UI介面可以用友盟自帶的也可以自己佈局。

友盟佈局:

	/**
	 * 友盟自定義UI
	 */
	private void showUmengUI() {
		//4.移除無用的分享圖示
		mController.getConfig().removePlatform( SHARE_MEDIA.RENREN, SHARE_MEDIA.QZONE,SHARE_MEDIA.QQ,SHARE_MEDIA.SINA,SHARE_MEDIA.TENCENT);
		mController.openShare(this, false);

		//5.設定微信好友分享內容
		WeiXinShareContent weixinContent = new WeiXinShareContent();
		//設定分享文字
		weixinContent.setShareContent("如果你是創業者,那來這裡。。。;如果你是投資者,那來這裡。。。");
		//設定title
		weixinContent.setTitle("測試標題");
		//設定分享內容跳轉URL
		weixinContent.setTargetUrl("https://www.baidu.com/");
		//設定分享圖片
		UMImage localImage=new UMImage(this,R.drawable.ic_launcher);
		weixinContent.setShareImage(localImage);
		//6.分享
		mController.setShareMedia(weixinContent);


		//5.1設定微信朋友圈分享內容
		CircleShareContent circleMedia = new CircleShareContent();
		circleMedia.setShareContent("如果你是創業者,那來這裡。。。;如果你是投資者,那來這裡。。。");
		//設定朋友圈title
		circleMedia.setTitle("測試標題");
		circleMedia.setShareImage(localImage);
		circleMedia.setTargetUrl("https://www.baidu.com/");
		//6.分享
		mController.setShareMedia(circleMedia);
	}
自定義:
	/**
	 * 顯示您的自定義介面,當用戶點選一個平臺時,直接呼叫directShare或者postShare來分享.
	 */
	protected void showCustomUI(final boolean isDirectShare) {
		View pw_share = LayoutInflater.from(this).inflate(R.layout.pw_share, null);
		
		ImageView iv_wxchat = (ImageView) pw_share.findViewById(R.id.iv_wxchat);
		ImageView iv_wxcircle = (ImageView) pw_share.findViewById(R.id.iv_wxcircle);

		iv_wxchat.setOnClickListener(this);
		iv_wxcircle.setOnClickListener(this);
		
		new AlertDialog.Builder(this).setView(pw_share).create().show();
	}

7. 設定分享監聽器,可以監聽使用者分享狀態
		/**
		 * 分享監聽器
		 */
		mShareListener = new SnsPostListener() {

			@Override
			public void onStart() {
				Log.i("啟動分享", "----------------------");
			}

			@Override
			public void onComplete(SHARE_MEDIA platform, int stCode,
					SocializeEntity entity) {
				if (stCode == 200) {
					Log.i("分享成功", "----------------------");
				} else {
					Log.i("分享失敗", "----------------------");
				}
			}
		};

8.自定義介面使用者點選分享到微信或朋友圈相應的操作:
		case R.id.iv_wxchat:
			// 獲取使用者點選的平臺
			platform =SHARE_MEDIA.WEIXIN;
			if (isDirectShare) {
				// 呼叫直接分享
				//設定微信好友分享內容
				WeiXinShareContent weixinContent = new WeiXinShareContent();
				//設定分享文字
				weixinContent.setShareContent("內容測試資料,那來這裡。。。;內容測試資料,那來這裡。。。");
				//設定title
				weixinContent.setTitle("標題測試資料");
				//設定分享內容跳轉URL
				weixinContent.setTargetUrl("https://www.baidu.com/");
				//設定分享圖片
				UMImage localImage=new UMImage(this,R.drawable.umeng_socialize_wechat);
				weixinContent.setShareImage(localImage);
				//分享
				mController.setShareMedia(weixinContent);

				mController.directShare(this, platform, mShareListener);
			} else {
				// 呼叫直接分享, 但是在分享前使用者可以編輯要分享的內容
				mController.postShare(this, platform, mShareListener);
			}

			break;
		case R.id.iv_wxcircle:
			// 獲取使用者點選的平臺
			platform =SHARE_MEDIA.WEIXIN_CIRCLE;
			if (isDirectShare) {
				// 呼叫直接分享
				//5.1設定微信朋友圈分享內容
				CircleShareContent circleMedia = new CircleShareContent();
				circleMedia.setShareContent("內容測試資料,那來這裡。。。;內容測試資料,那來這裡。。。");
				//設定朋友圈title
				circleMedia.setTitle("標題測試資料");
				UMImage localImage=new UMImage(this,R.drawable.umeng_socialize_wxcircle);
				circleMedia.setShareImage(localImage);
				circleMedia.setTargetUrl("https://www.baidu.com/");
				//6.分享
				mController.setShareMedia(circleMedia);

				mController.directShare(this, platform,
						mShareListener);

			} else {
				// 呼叫直接分享, 但是在分享前使用者可以編輯要分享的內容
				mController.postShare(this, platform,
						mShareListener);
			}
		
			break;


以上程式碼就可以實現微信分享功能,經過測試分享內容需要包含圖片才能有title和跳轉url。

既然是微信分享,想要實現分享功能,還需要在微信開發平臺註冊分享的許可權。在微信平臺申請要注意:應用簽名要改為小寫並且去掉:即:AB:1E 變為:ab1e,否則分享總會提示失敗