Android 友盟社會化分享的集成與封裝
分享是APP中非常高頻的操作之一,在Android的開發(fā)環(huán)境中蝉娜,第三方分享框架也有很多掌桩。比較流行的包括 極光社會化分享(sharesdk)攻晒、友盟社會化分享(Ushare)鸣哀、Mob社會化分享以及在githut上比較流行的 ShareSDK、ShareUtil、BiliShare、ShareLoginLib等等喳挑。 本篇文章基于友盟ShareSDK,介紹了其集成過程并對其進(jìn)行模塊化封裝滔悉,以便在項(xiàng)目中更快捷的集成和使用伊诵。
集成前準(zhǔn)備
-
獲取友盟Appkey
在【友盟+】官網(wǎng)注冊并且添加新應(yīng)用,獲得Appkey回官。友盟后臺的應(yīng)用名與實(shí)際應(yīng)用名和包名無關(guān)曹宴,建議命名為應(yīng)用名+平臺(iOS/Android),Android和IOS兩個(gè)平臺不能進(jìn)行共用歉提,需要進(jìn)行分開浙炼。 建議使用企業(yè)郵箱注冊,避免使用個(gè)人郵箱注冊唯袄。
獲取友盟Appkey
-
三方賬號申請
因?yàn)樯婕暗胶透鱾€(gè)分享平臺的交互弯屈,所以在集成前需要在各個(gè)平臺創(chuàng)建應(yīng)用并提交審核。創(chuàng)建應(yīng)用后恋拷,分享资厉、登錄操作時(shí)顯示的應(yīng)用icon、名稱和對應(yīng)開放平臺設(shè)置有關(guān)蔬顾,必須要?jiǎng)?chuàng)建應(yīng)用的平臺為:微信宴偿、新浪、QQ诀豁、Facebook窄刘、Kakao、LinkeIn舷胜、Twitter娩践、釘釘。
目前集成的內(nèi)容只包含微信烹骨、新浪翻伺、QQ三個(gè)平臺,申請渠道如下:
平臺 申請地址 微信開放平臺 http://open.weixin.qq.com/ QQ互聯(lián)平臺 http://connect.qq.com/ 微博開放平臺 http://open.weibo.com 注1:申請QQ登錄一定要在QQ互聯(lián)平臺沮焕,不是在QQ開放平臺(open.qq.com)
注2:申請過程中可能需要企業(yè)相關(guān)資質(zhì)吨岭,如法人身份證、營業(yè)執(zhí)照峦树、稅務(wù)登記證等辣辫,需要提前準(zhǔn)備好旦事。
注3:提交應(yīng)用申請時(shí),需要提交應(yīng)用相關(guān)的信息(應(yīng)用名稱急灭、介紹姐浮、圖標(biāo)、截圖化戳、授權(quán)回調(diào)域等),微信還需要提交《微信開放平臺網(wǎng)站信息登記表》单料。
注4: 建議大家用企業(yè)賬號申請第三方開放平臺埋凯,不要使用個(gè)人的QQ点楼、微信、微博和郵箱進(jìn)行申請白对,這樣可以避免申請人在職位變動(dòng)或者離職后掠廓,導(dǎo)致賬號管理的風(fēng)險(xiǎn)和交接麻煩。
注5:開放平臺申請多數(shù)需要審核流程甩恼,因此在項(xiàng)目開始時(shí)蟀瞧,建議首先申請開放平臺賬號和創(chuàng)建應(yīng)用,以免申請時(shí)間長影響開發(fā)進(jìn)度条摸。
申請很復(fù)雜悦污,所以一般直接找產(chǎn)品經(jīng)歷要就好啦(#笑)。如果是練習(xí)用的話钉蒲,可以直接用官方Demo的包名com.umeng.soexample創(chuàng)建一個(gè)示例項(xiàng)目切端,沿用簽名文件、Appkey以及各個(gè)三方的Appkey就好了顷啼。
集成友盟sdk
在后期模塊化后踏枣,直接引入封裝好的模塊即可集成,這里先介紹一下通過添加sdk的方式集成钙蒙,以及其中我遇到過的問題茵瀑。
-
下載SDK
最新SDK地址,可以看到友盟的分享包含很多平臺躬厌,這里我們只用到了微博微信QQ的分享和登錄功能马昨,不包含支付等,所以選擇默認(rèn)下載的三個(gè)精簡版即可扛施。如有需求可以參考官方開發(fā)文檔添加使用偏陪。
image
-
添加SDK
解壓下載的sdk壓縮包,我們需要用到其中common和share文件夾下的內(nèi)容煮嫌。res顧名思義都是資源文件笛谦,復(fù)制到項(xiàng)目的res目錄中,其他所有jar文件復(fù)制到項(xiàng)目的app/libs目錄下昌阿,并確保在app的gradle依賴中包含implementation fileTree(include: ['*.jar'], dir: 'libs') 饥脑,將這個(gè)文件夾中所有jar包導(dǎo)入到項(xiàng)目里恳邀。
image -
添加回調(diào)Activity
用到的三個(gè)平臺中,只有微信需要手動(dòng)添加Activity灶轰。具體做法是谣沸,在包名目錄下創(chuàng)建wxapi文件夾,新建一個(gè)名為
WXEntryActivity
的Activity繼承WXCallbackActivity
笋颤,內(nèi)容為空即可乳附。image -
配置Android Manifest XML
在項(xiàng)目的Manifest中添加各個(gè)回調(diào)Activity:
<activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.umeng.socialize.media.WBShareCallBackActivity" android:configChanges="keyboardHidden|orientation" android:exported="false" android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity> <activity android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity" android:configChanges="keyboardHidden|orientation" android:exported="false" android:windowSoftInputMode="adjustResize"></activity> <activity android:name="com.sina.weibo.sdk.share.WbShareTransActivity" android:launchMode="singleTask" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </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" /> <data android:scheme="tencent100424468" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
其中qq的appkey需要替換成自己申請的appkey,這里用的是友盟官方demo的以作測試用伴澄。
-
添加權(quán)限
在AndroidManifest中添加以下權(quán)限:
<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.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
如果項(xiàng)目的目標(biāo)sdk版本高于Android6.0赋除,即 targetSdkVersion >= 23 ,還需要在項(xiàng)目中添加權(quán)限的動(dòng)態(tài)申請:
if (Build.VERSION.SDK_INT >= 23) { String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CALL_PHONE, Manifest.permission.READ_LOGS, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.SET_DEBUG_APP, Manifest.permission.SYSTEM_ALERT_WINDOW, Manifest.permission.GET_ACCOUNTS, Manifest.permission.WRITE_APN_SETTINGS}; ActivityCompat.requestPermissions(this, mPermissionList, 123); }
-
初始化設(shè)置
將前面的都集成之后非凌,接下來就可以正式進(jìn)入到代碼層面的操作啦举农。在Application中調(diào)用友盟的初始化接口,以及設(shè)置各個(gè)平臺的appkey敞嗡,這里全部用的是官方demo測試用的appkey颁糟。
public class App extends Application { @Override public void onCreate() { super.onCreate(); //初始化組件化基礎(chǔ)庫, 統(tǒng)計(jì)SDK/推送SDK/分享SDK都必須調(diào)用此初始化接口 UMConfigure.init(this, "5bed13e1f1f5564655000404", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "d9352161be267fb40fb12ad5eb04edf9"); UMShareAPI.get(this); } //各個(gè)平臺的配置 { //微信 PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0"); //新浪微博(第三個(gè)參數(shù)為回調(diào)地址) PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com"); //QQ PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf"); PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO"); PlatformConfig.setAlipay("2015111700822536"); PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e"); PlatformConfig.setPinterest("1439206"); PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f"); PlatformConfig.setDing("dingoalmlnohc0wggfedpk"); PlatformConfig.setVKontakte("5764965", "5My6SNliAaLxEm3Lyd9J"); PlatformConfig.setDropbox("oz8v5apet3arcdy", "h7p2pjbzkkxt02a"); } }
-
添加簽名文件
部分平臺在申請appkey的時(shí)候就需要項(xiàng)目的簽名文件,如果沒有的話會影響授權(quán)喉悴。常規(guī)項(xiàng)目只要正常申請好簽名就可以了棱貌,這里講一下作為測試用例如何添加簽名。
將官方demo中app目錄下的debug.keystore復(fù)制到自己的練習(xí)項(xiàng)目app目錄下
在項(xiàng)目的app.gradle依賴中android條目下添加如下代碼:
buildTypes { release { // 是否進(jìn)行混淆 minifyEnabled false // 簽名文件 signingConfig signingConfigs.debug // 混淆文件的位置 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled false signingConfig signingConfigs.debug proguardFiles 'proguard-rules.pro' } } signingConfigs { debug { storeFile file('debug.keystore') storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } }
開始分享
終于到了分享的步驟箕肃,是騾子是馬要牽出來溜溜看看能不能走了婚脱,先介紹一下友盟分享的兩種形式:
使用分享面板的分享,用戶可以調(diào)用我們的打開分享面板的方法突雪,點(diǎn)擊分享面板的對應(yīng)平臺進(jìn)行分享起惕。
-
不使用分享面板的分享,用戶可以自己寫分享按鈕咏删,或者觸發(fā)事件惹想,然后調(diào)用我們的分享方法,進(jìn)行分享督函。簡而言之嘀粱,直接分享就是在用戶自己的界面組件中插入分享行為,分享面板是打開我們寫好的一個(gè)界面組件辰狡,根據(jù)點(diǎn)擊事件進(jìn)行分享锋叨。
可分享的內(nèi)容包括:
平臺 | 授權(quán) | 可分享內(nèi)容 | 用戶信息 |
---|---|---|---|
是 | 文本 圖片 鏈接 視頻 音樂 | 是 | |
qq空間 | 同qq | 文字(說說) 圖片(說說) 鏈接 視頻 音樂 | 同qq |
微信 | 是 | 文本 圖片 鏈接 視頻 音樂 | 是 |
微信朋友圈 | 同微信 | 文本 圖片 鏈接 視頻 音樂 (分享鏈接不顯示描述) | 同微信 |
微信收藏 | 同微信 | 文本 圖片 鏈接 視頻 音樂 文件 | 同微信 |
新浪微博 | 是 | 文本 圖片 鏈接 視頻 音樂 文件 | 是 |
下面以直接分享一個(gè)網(wǎng)站到微信平臺為例,看一下具體的代碼實(shí)現(xiàn):
UMWeb web = new UMWeb("https://gank.io/");//創(chuàng)建要分享的Web對象宛篇,傳入分享的url地址
web.setTitle("測試分享標(biāo)題");//設(shè)置標(biāo)題
web.setThumb(new UMImage(this, R.drawable.thumb));//設(shè)置傳入顯示的縮略圖
web.setDescription("測試分享內(nèi)容測試分享內(nèi)容測試分享內(nèi)容測試分享內(nèi)容測試分享內(nèi)容");//設(shè)置描述
new ShareAction(ShareDetailActivity.this)//開啟分享
.withMedia(web) //填入創(chuàng)建好的分享內(nèi)容
.setPlatform(SHARE_MEDIA.WEIXIN)//選擇分享平臺
.setCallback(shareListener)//設(shè)置對分享返回結(jié)果的監(jiān)聽
.share();//啟動(dòng)分享操作
實(shí)現(xiàn)效果如下:
以面板的形式分享這個(gè)網(wǎng)站:
ShareBoardlistener boardListener = new ShareBoardlistener() { //創(chuàng)建面板的監(jiān)聽器
@Override
public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA platform) {
new ShareAction(mActivity)//開啟分享
.withMedia(web) //填入創(chuàng)建好的分享內(nèi)容
.setPlatform(platform)//填入選擇的平臺
.setCallback(shareListener)//設(shè)置對分享返回結(jié)果的監(jiān)聽
.share();//啟動(dòng)分享操作
}
};
new ShareAction(mActivity)
.setDisplayList(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.WEIXIN_FAVORITE,
SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE)//設(shè)置分享面板顯示的平臺
.setShareboardclickCallback(boardListener)//添加之前創(chuàng)建的面板監(jiān)聽器
.open(config);//開啟分享面板 其中可傳入能對面板樣式進(jìn)行自定義操作的config對象
//比如設(shè)置面板在底部還是中部顯示娃磺、是否有取消按鈕、圖標(biāo)形狀叫倍、字體大小和背景顏色等等
默認(rèn)居中的面板效果如下:
最后不要忘記在調(diào)用分享的Activity中偷卧,添加如下代碼豺瘤,關(guān)閉監(jiān)聽,防止內(nèi)存泄露等問題听诸。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onDestroy() {
super.onDestroy();
UMShareAPI.get(this).release();
}
對友盟分享的模塊化和代碼封裝
在前面的內(nèi)容里坐求,我們完整的體驗(yàn)了友盟社會化分享的準(zhǔn)備、集成和使用晌梨,雖然看起來比較簡單明了桥嗤,但對于初次接觸的人還是比較容易碰到問題的,在項(xiàng)目中多次集成也比較繁瑣仔蝌。所以接下來到了本文的重點(diǎn)內(nèi)容泛领,對友盟的分享進(jìn)行模塊化,在需要時(shí)直接導(dǎo)入模塊即可使用掌逛,并將主要方法進(jìn)行封裝處理师逸,在開發(fā)時(shí)提高效率司倚,減少代碼量豆混。
下面記錄一下封裝過程中的思路和過程,以及封裝后的使用方法动知。
-
封裝過程
在前面的使用介紹中皿伺,可以看到每一次分享,都需要提前創(chuàng)建好待分享的內(nèi)容盒粮,需要傳入的數(shù)據(jù)越多鸵鸥,代碼行數(shù)越多,所以首先對待創(chuàng)建的對象進(jìn)行封裝丹皱。
根據(jù)分享的類型妒穴,分了8個(gè)類:
分享類型 枚舉參數(shù) 僅文本 SHARE_TYPE_TEXT 僅圖片 SHARE_TYPE_IMAGE 圖文 SHARE_TYPE_TEXTANDIMG 網(wǎng)址 SHARE_TYPE_WEB 網(wǎng)絡(luò)視頻 SHARE_TYPE_VIDEO 網(wǎng)絡(luò)音樂 SHARE_TYPE_MUSIC GIF表情 SHARE_TYPE_EMOJI 微信小程序 SHARE_TYPE_MINAPP 其中圖片可以通過資源文件id、File文件摊崭、網(wǎng)絡(luò)地址讼油、Bitmap對象、還有byte[]這些方式來創(chuàng)建呢簸,其他很多類型雖然不需要圖片矮台,但很多需要縮略圖,而縮略圖的本質(zhì)也是圖片根时,所以可以將縮略圖獨(dú)立出來:
private static UMImage mThumb; //創(chuàng)建待分享所用的縮略圖 public static void createThumbImage(int thumbResId) { mThumb = new UMImage(mActivity, thumbResId); } public static void createThumbImage(File thumbFile) { mThumb = new UMImage(mActivity, thumbFile); } public static void createThumbImage(String thumbImageUrl) { mThumb = new UMImage(mActivity, thumbImageUrl); } public static void createThumbImage(Bitmap thumbBitmap) { mThumb = new UMImage(mActivity, thumbBitmap); } public static void createThumbImage(byte[] thumbBytes) { mThumb = new UMImage(mActivity, thumbBytes); }
接下來以創(chuàng)建待分享的網(wǎng)址為例瘦赫,需要傳入的數(shù)據(jù)包括視頻地址、標(biāo)題蛤迎、描述确虱、縮略圖最少4個(gè)內(nèi)容,前三個(gè)都是String對象替裆,最復(fù)雜的縮略圖已經(jīng)通過上面的方法創(chuàng)建好了校辩,所以只需要添加前三個(gè)內(nèi)容就夠了:
private static UMWeb mWeb; //創(chuàng)建待分享的鏈接 需要縮略圖 public static void createUrl(String url, String title, String description) { mWeb = new UMWeb(url); mWeb.setTitle(title); mWeb.setDescription(description); mWeb.setThumb(mThumb);//傳入創(chuàng)建好的縮略圖 }
到此我們已經(jīng)創(chuàng)建好了需要分享的網(wǎng)址對象唱较,接下來自然而然就是分享了。實(shí)現(xiàn)非常簡單粗暴召川,直接傳入需要分享的平臺和類型對應(yīng)的枚舉名即可:
public static void share(SHARE_MEDIA platform, SHARE_TYPE shareType) { ShareAction action = new ShareAction(mActivity) .setPlatform(platform).setCallback(mListener); switch (shareType) { case SHARE_TYPE_TEXT: action.withText(mText).share(); break; case SHARE_TYPE_IMAGE: action.withMedia(mImage).share(); break; case SHARE_TYPE_TEXTANDIMG: action.withText(mText).withMedia(mImage).share(); break; case SHARE_TYPE_WEB: action.withMedia(mWeb).share(); break; case SHARE_TYPE_VIDEO: action.withMedia(mVideo).share(); break; case SHARE_TYPE_MUSIC: action.withMedia(mMusic).share(); break; case SHARE_TYPE_EMOJI: action.withMedia(mEmoji).share(); break; case SHARE_TYPE_MINAPP: action.withMedia(mMinAPP).share(); break; } }
到這里基本將直接分享的內(nèi)容進(jìn)行了封裝南缓,那么如果用戶不需要我們已經(jīng)設(shè)好的分享callback,想要自定義呢荧呐?所以需要構(gòu)建一個(gè)方法讓用戶傳入自定義的監(jiān)聽器:
//設(shè)置分享監(jiān)聽 傳入自定義的監(jiān)聽方式 public static void setShareListener(UMShareListener listener) { mListener = listener; }
除了直接分享汉形,還有面板形式的分享,在這里提供了三種形式的封裝:
-
直接在中間顯示分享面板
public static void shareBoardAtCenter(SHARE_TYPE shareType) { ShareBoardConfig config = new ShareBoardConfig(); config.setShareboardPostion(ShareBoardConfig.SHAREBOARD_POSITION_CENTER); config.setCancelButtonVisibility(true); shareBoard(config, shareType); }
-
在底部顯示分享面板
public static void shareBoardAtBottom(SHARE_TYPE shareType) { ShareBoardConfig config = new ShareBoardConfig(); config.setShareboardPostion(ShareBoardConfig.SHAREBOARD_POSITION_BOTTOM); config.setCancelButtonVisibility(true); shareBoard(config, shareType); }
-
用戶自定義分享面板
public static void setBoardWithConfig(ShareBoardConfig config, SHARE_TYPE shareType) { shareBoard(config, shareType); }
三種方式倍阐,最終都是將面板定義 config 以及要分享的類型 shareType 傳入 shareBoard() 方法中概疆,config的具體自定義方法見官方文檔,下面貼出 shareBoard() 方法:
private static void shareBoard(ShareBoardConfig config, final SHARE_TYPE shareType) { ShareBoardlistener boardListener = new ShareBoardlistener() { @Override public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA platform) { share(platform, shareType); } }; new ShareAction(mActivity) .setDisplayList(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.WEIXIN_FAVORITE, SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE) .setShareboardclickCallback(boardListener) .open(config); }
可以看出在選擇平臺后峰搪,具體分享的實(shí)現(xiàn)方法又跳轉(zhuǎn)到了share()中岔冀,實(shí)現(xiàn)了代碼的復(fù)用,對于用戶需要自定義面板分享哪些平臺概耻,同樣可以通過setPlatforms()方法實(shí)現(xiàn):
//設(shè)置分享面板要分享的內(nèi)容 public static void setBoardPlatforms(SHARE_MEDIA[] platforms) { mPlatforms = platforms; }
-
-
使用方法
整體的使用比較簡單明了使套,不過需要注意的是,除了分享文本圖片鞠柄,其他類型都要記得先創(chuàng)建縮略圖侦高。
下面以分享一個(gè)網(wǎng)址或者視頻為例:
//首先需要初始化 UShareUtils.init(this); //創(chuàng)建縮略圖 UShareUtils.createThumbImage(R.drawable.cat80); //創(chuàng)建待分享的網(wǎng)址,傳入網(wǎng)址厌杜、標(biāo)題和描述 UShareUtils.createUrl("https://gank.io/", "分享標(biāo)題", "分享描述"); //創(chuàng)建待分享的視頻奉呛,傳入視頻地址、標(biāo)題和描述 UShareUtils.createVideo("http://vfx.mtime.cn/Video/2018/10/26/mp4/181026140242572417.mp4", "《馴龍高手3》中文預(yù)告", "《馴龍高手3 》由夢工場動(dòng)畫出品夯尽,馴龍高手是影史上最受歡迎的動(dòng)畫系列之一瞧壮,而這部備受期待的新片是該系列的第三部。 "); //點(diǎn)擊分享 @OnClick({R.id.tv_share_web, R.id.tv_share_video, R.id.tv_share_board, R.id.tv_share_center}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.tv_share_web: //分享WEB到QQ UShareUtils.share(SHARE_MEDIA.QQ, SHARE_TYPE.SHARE_TYPE_WEB); break; case R.id.tv_share_video: //分享視頻到微信 UShareUtils.share(SHARE_MEDIA.WEIXIN, SHARE_TYPE.SHARE_TYPE_VIDEO); break; case R.id.tv_board_board: //打開底部分享面板 分享WEB UShareUtils.shareBoardAtBottom(SHARE_TYPE.SHARE_TYPE_WEB); break; case R.id.tv_board_center: //打開中部分享面板 分享視頻 UShareUtils.shareBoardAtBottom(SHARE_TYPE.SHARE_TYPE_VIDEO); break; } }