社會化分享是眼下必學且火熱的功能。以前有寫第三方登陸,那僅僅是社會化分享的一部分。今天來玩玩分享微信朋友圈。html
爲了方便操做,仍是依照步驟寫。java
一,註冊android
註冊應用已經在這裏具體說明過了,這裏就很少提了。api
二,在微信開放平臺中受權開發人員身份,以及註冊應用微信
連接:https://open.weixin.qq.com/ 進入管理中心 提交我的(公司)資料註冊開發人員信息(需要審覈等待)。經過後再建立移動應用(確保Package和Appname的一致性)以後拿到應用的AppId和Appsecretapp
三,開始集成ide
下載友盟SDK:http://dev.umeng.com/social/android/sdk-download 選擇需要用到的平臺以及導入方式 而後將Lib導入項目(也可以經過SDKIntegration.jar生成Lib)post
接着在AndroidManifest.xml中註冊例如如下信息:ui
<!-- 友盟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中加入例如如下成員變量 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方法:this
/** * 微信支持純文字,純圖片(點擊查看大圖)。圖文,音樂。視頻分享。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