友盟分享實例( 一)——在activity中的應用

    前段日子做了一個新聞類的應用,作爲一個新聞類的應用,分享是必不可少的一個功能,也就是我們經常看到的熟悉的頁面:

                    

    由於自己是初次接觸,很多的東西都不是很明白,如今回頭看看,真的沒有很多的東西!由於是基於第三方做的一些開發,所以我們需要做的也就是按照規範直接調用即可!說歸說,但是在實踐的過程中還是會遇到各種各樣的問題,接下來就將自己在過程中遇到的問題以及需要注意的點分享給大家,希望可以幫助到剛剛接觸到這一塊技術的親們!

一、各種平臺賬號的註冊

    友盟官網註冊自己的賬號、微信開放平臺註冊自己的賬號、qq互聯註冊自己的賬號(這個可以和自己的PM要一下),這個在後邊的代碼中會使用得到,而且是你的應用的唯一標示,接下來就需要按照官方文檔上的提示一步步去實現了。

**注意:這裏註冊的賬號一定要根據自己的實際情況對應,如果自己做的是移動應用就註冊移動應用、如果是網站應用即註冊網站應用!

二、SDK導入和調用

    友盟官方提供了三種導入SDK的方法,如果你是第一次接觸這個,推薦使用快速集成的方案,這樣可以減少不少的麻煩,想要實現什麼平臺的分享就對應勾選起來即可。例如只做qq和微信的分享,只需要勾選相應的平臺和自己需要的資料即可!(如果是初次接觸,建議將文檔及工程demo都下載下來,方便自己的學習)



再接下來就是配置文件中權限的配置,

 <!-- 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
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <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" />

        <!-- ############ 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="tencent1104805317" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" >
        </activity>

        <!-- 友盟APPID -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="55ecf150e0f55a537400042f" >
        </meta-data>
    </application>

    <!-- ###################聲明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" />

注:這裏的配置主要是對各個平臺的權限配置和友盟APPID的配置

 <!-- 友盟APPID -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="55ecf150e0f55a537400042f" >
        </meta-data>

最後就是在自己的activity中實現友盟控制器的使用。

1.聲明分享控制器

final UMSocialService mController = UMServiceFactory
			.getUMSocialService("com.umeng.share");
2.在onCreate方法中添加各個分享平臺

// 添加微信平臺到SDK
		UMWXHandler wxHandler = new UMWXHandler(PictureViewInfoActivity.this,
				"wxd4d271556de359af", "55958b52d9760b0e9ae763ecc380d198");
		wxHandler.addToSocialSDK();

		// 添加微信朋友圈平臺到SDK
		UMWXHandler wxCicleHandler = new UMWXHandler(
				PictureViewInfoActivity.this, "wxd4d271556de359af",
				"55958b52d9760b0e9ae763ecc380d198");
		wxCicleHandler.setToCircle(true);
		wxCicleHandler.addToSocialSDK();

		// 添加qq到SDK,參數1爲當前Activity,參數2爲開發者在QQ互聯申請的APP ID,參數3爲開發者在QQ互聯申請的APP kEY.
		UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(
				PictureViewInfoActivity.this, "1104805317", "gvdED7aW06yaigv7");
		qqSsoHandler.addToSocialSDK();

		// 添加qq空間平臺到SDK
		QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(
				PictureViewInfoActivity.this, "1104805317", "gvdED7aW06yaigv7");
		qZoneSsoHandler.addToSocialSDK();

		// 去除人人網、豆瓣網、騰訊微博、新浪微博的分享
		mController.getConfig().removePlatform(SHARE_MEDIA.RENREN,
				SHARE_MEDIA.DOUBAN, SHARE_MEDIA.SINA, SHARE_MEDIA.TENCENT);
3.打開分享面板;

share = (LinearLayout) findViewById(R.id.picView_Share);
		share.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				mController.openShare(PictureViewInfoActivity.this, false);
			}
		});

4.設置分享內容;

// 設置分享內容
				try {

					/*-------------------------設置微信好友分享內容-------------------*/
					WeiXinShareContent weixinContent = new WeiXinShareContent();
					// 設置分享文字
					weixinContent.setShareContent(pictureViewInfo.get(0)
							.getTitle());
					// 設置title
					weixinContent.setTitle("來自***的分享");
					// 設置分享內容跳轉URL
					weixinContent.setTargetUrl(URLs.SOCIAL_SHARE_HTTP
							+ pictureViewInfo.get(0).getUid() + "");
					// 設置分享圖片
					weixinContent.setShareImage(new UMImage(
							PictureViewInfoActivity.this, URLs.imgeUrl
									+ pictureViewInfo.get(0).getPath()));
					mController.setShareMedia(weixinContent);

					/*-------------------------設置微信朋友圈分享內容----------------------------*/
					CircleShareContent circleMedia = new CircleShareContent();
					circleMedia.setShareContent("*******!");
					circleMedia.setTitle("來自***的分享" + " | "
							+ pictureViewInfo.get(0).getTitle());
					circleMedia.setShareMedia(new UMImage(
							PictureViewInfoActivity.this, URLs.imgeUrl
									+ pictureViewInfo.get(0).getPath()));
					circleMedia.setTargetUrl(URLs.SOCIAL_SHARE_HTTP
							+ pictureViewInfo.get(0).getUid() + "");
					mController.setShareMedia(circleMedia);

					/*--------------------------------qq-----------------------------*/
					QQShareContent qqShareContent = new QQShareContent();
					// 設置分享文字
					qqShareContent.setShareContent(pictureViewInfo.get(0)
							.getTitle());
					// 設置分享title
					qqShareContent.setTitle("來自***的分享");
					// 設置分享圖片
					qqShareContent.setShareImage(new UMImage(
							PictureViewInfoActivity.this, URLs.imgeUrl
									+ pictureViewInfo.get(0).getPath()));
					// 設置點擊分享內容的跳轉鏈接
					qqShareContent.setTargetUrl(URLs.SOCIAL_SHARE_HTTP
							+ pictureViewInfo.get(0).getUid() + "");
					mController.setShareMedia(qqShareContent);

					/*--------------------------------qq空間-----------------------------*/
					QZoneShareContent qzone = new QZoneShareContent();
					// 設置分享文字
					qzone.setShareContent(pictureViewInfo.get(0).getTitle());

					// 設置分享內容的標題
					qzone.setTitle("來自***的分享");

					// 設置分享圖片
					qzone.setShareImage(new UMImage(
							PictureViewInfoActivity.this, URLs.imgeUrl
									+ pictureViewInfo.get(0).getPath()));
					// 設置點擊消息的跳轉URL
					qzone.setTargetUrl(URLs.SOCIAL_SHARE_HTTP
							+ pictureViewInfo.get(0).getUid() + "");
					mController.setShareMedia(qzone);

					// mController
					// .setShareContent(pictureViewInfo.get(0).getTitle()
					// +
					// "http://123.56.114.148:8082/CheDuanZi/api/json!share.do?articleId="
					// + pictureViewInfo.get(0).getUid());
					// // 設置分享圖片
					// mController.setShareMedia(new UMImage(
					// PictureViewInfoActivity.this,
					// "http://123.56.114.148:8082/CheDuanZi/statics"
					// + pictureViewInfo.get(0).getPath()));
					// 設置點擊分享內容的跳轉鏈接
					// qqShareContent
					// .setTargetUrl("http://123.56.114.148:8082/CheDuanZi/api/json!share.do?articleId=100");
					// mController.setShareMedia(qqShareContent);
				} catch (Exception e) {
					// TODO: handle exception
				}
    需要注意的是分享內容必須設置setTargetUrl()和setShareContent(),這裏只列出了qq好友、空間和微信好友、朋友圈的分享,其他平臺的分享內容的設置以此類推!

    一切就緒之後,還需要提醒的是微信分享功能的測試是需要打包測試的,很多人就是因爲不知道這一點而發愁了半天也不能實現;如果需要調試qq分享的話可以在互聯平臺上填寫自己的調試qq號碼,供自己調試使用,和打包測試相比很是方便!

    最後提示一下大家,儘可能在官網上找資料,網絡上查到的東西儘管很多,但是他的真實性無法保證!就拿自己在設置微信分享的APPID和APPSecret時,網上有資料說是用打包時的MD5碼和SH1碼,

                  

但事實證明這個是不對的,正確的答案是微信開發平臺上得到的APPID和APPSecret;

    克服自己內心的抵觸、恐懼心理,相信大家一定可以做到!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章