Android使用友盟集成QQ罚拟、微信台诗、微博等第三方分享

轉(zhuǎn)載請(qǐng)注明出處:http://www.reibang.com/p/eeb378b99bf3

前言

最近項(xiàng)目需要加入第三方分享和登錄功能完箩,之前其他項(xiàng)目的第三方分享和登錄一直都使用ShareSDK實(shí)現(xiàn)的。為了統(tǒng)一使用友盟的全家桶拉队,所以三方分享和登錄也就選擇了友盟弊知。這里記錄一下完整的集成與使用流程。

1粱快、申請(qǐng)友盟Appkey

直接到友盟官網(wǎng)申請(qǐng)即可秩彤。一般都不用自己去申請(qǐng),跟項(xiàng)目經(jīng)理要即可事哭。
(我這里的Demo為了方便就直接用友盟Demo里面提供的Appkey漫雷,但是創(chuàng)建的項(xiàng)目包名也要和友盟一樣。真實(shí)項(xiàng)目要自己另外申請(qǐng))

2鳍咱、下載SDK

下載地址:http://dev.umeng.com/social/android/sdk-download

下載的時(shí)候根據(jù)自己需求進(jìn)行選擇珊拼,我這里選擇選擇的是精簡(jiǎn)版(包含常用的分享與登錄功能),只測(cè)試微信流炕,QQ澎现,新浪微博。


下載后解壓出來(lái)是這樣的:


3每辟、準(zhǔn)備資源

使用友盟的集成工具快速集成友盟的分享SDK:雙擊 友盟集成工具.jar-->選擇使用的平臺(tái)和IDE剑辫,如圖:


點(diǎn)擊OK鍵,會(huì)在當(dāng)前目錄生成名為umeng_integratetool_result的文件夾渠欺,如圖:


4妹蔽、開始集成

1、將上面的文件夾依次粘貼到工程相應(yīng)的文件夾即可挠将,如圖:

2胳岂、將debug.keystore文件拷貝到項(xiàng)目的app目錄下(對(duì)應(yīng)app build中相應(yīng)的位置),目的是為了使用友盟的簽名舔稀,如圖:

3乳丰、添加回調(diào)Activity

1,微信回調(diào):
其實(shí)在第一步拷貝的時(shí)候已經(jīng)添加了内贮。即在包名目錄下創(chuàng)建wxapi文件夾产园,新建一個(gè)名為WXEntryActivity的activity繼承WXCallbackActivity

2,QQ與新浪微博的回調(diào):
QQ與新浪不需要添加Activity夜郁,但需要在使用QQ分享或者授權(quán)的Activity中添加如下代碼:
(注意onActivityResult不可在fragment中實(shí)現(xiàn)什燕,如果在fragment中調(diào)用登錄或分享,需要在fragment依賴的Activity中實(shí)現(xiàn))

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}

4竞端、配置清單文件Android Manifest

1屎即,添加權(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" />

2,添加sdk中需要的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=".WBShareActivity"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <!--qq精簡(jiǎn)版-->
        <activity
            android:name="com.umeng.qq.tencent.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"/>
                <!--這里的scheme是qq分享要用的事富,100424468為自己申請(qǐng)的appid技俐,真實(shí)項(xiàng)目中需要替換-->
                <data android:scheme="tencent100424468"/>
            </intent-filter>
        </activity>
        <activity
            android:name="com.umeng.qq.tencent.AssistActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
        <!--分享編輯頁(yè)-->
        <activity
            android:name="com.umeng.socialize.editorpage.ShareActivity"
            android:excludeFromRecents="true"
            android:theme="@style/Theme.UMDefault"
            />

3埃撵,添加友盟appkey

        <meta-data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf">
        </meta-data>

5、配置三方appkey

新建MyApplication繼承Application(注意:需要在清單文件中配置該MyApplication)虽另,在MyApplication文件中配置三方平臺(tái)的appkey和初始化sdk。如下:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        UMShareAPI.get(this);//初始化sdk
        //開啟debug模式饺谬,方便定位錯(cuò)誤捂刺,具體錯(cuò)誤檢查方式可以查看http://dev.umeng.com/social/android/quick-integration的報(bào)錯(cuò)必看,正式發(fā)布募寨,請(qǐng)關(guān)閉該模式
        Config.DEBUG = true;
    }


    //各個(gè)平臺(tái)的配置
    {
        //微信
        PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
        //新浪微博(第三個(gè)參數(shù)為回調(diào)地址)
        PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com/sina2/callback");
        //QQ
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
    }
}

6族展、分享代碼MainActivity.java:

public class MainActivity extends AppCompatActivity {

    private String TAG = this.getClass().getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void qq(View view) {
        ShareUtils.shareWeb(this, Defaultcontent.url, Defaultcontent.title
                , Defaultcontent.text, Defaultcontent.imageurl, R.mipmap.icon_logo_share, SHARE_MEDIA.QQ
        );
    }

    public void weiXin(View view) {
        ShareUtils.shareWeb(this, Defaultcontent.url, Defaultcontent.title
                , Defaultcontent.text, Defaultcontent.imageurl, R.mipmap.icon_logo_share, SHARE_MEDIA.WEIXIN
        );
    }

    public void weixinCircle(View view) {
        ShareUtils.shareWeb(this, Defaultcontent.url, Defaultcontent.title
                , Defaultcontent.text, Defaultcontent.imageurl, R.mipmap.icon_logo_share, SHARE_MEDIA.WEIXIN_CIRCLE
        );
    }

    public void sina(View view) {
        ShareUtils.shareWeb(this, Defaultcontent.url, Defaultcontent.title
                , Defaultcontent.text, Defaultcontent.imageurl, R.mipmap.icon_logo_share, SHARE_MEDIA.SINA
        );
    }

    public void Qzone(View view) {
        ShareUtils.shareWeb(this, Defaultcontent.url, Defaultcontent.title
                , Defaultcontent.text, Defaultcontent.imageurl, R.mipmap.icon_logo_share, SHARE_MEDIA.QZONE
        );
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
    }

7、分享工具類ShareUtils.java:

public class ShareUtils {

    /**
     * 分享鏈接
     */
    public static void shareWeb(final Activity activity, String WebUrl, String title, String description, String imageUrl, int imageID, SHARE_MEDIA platform) {
        UMWeb web = new UMWeb(WebUrl);//連接地址
        web.setTitle(title);//標(biāo)題
        web.setDescription(description);//描述
        if (TextUtils.isEmpty(imageUrl)) {
            web.setThumb(new UMImage(activity, imageID));  //本地縮略圖
        } else {
            web.setThumb(new UMImage(activity, imageUrl));  //網(wǎng)絡(luò)縮略圖
        }
        new ShareAction(activity)
                .setPlatform(platform)
                .withMedia(web)
                .setCallback(new UMShareListener() {
                    @Override
                    public void onStart(SHARE_MEDIA share_media) {

                    }

                    @Override
                    public void onResult(final SHARE_MEDIA share_media) {
                        activity.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                if (share_media.name().equals("WEIXIN_FAVORITE")) {
                                    Toast.makeText(activity, share_media + " 收藏成功", Toast.LENGTH_SHORT).show();
                                } else {
                                    Toast.makeText(activity, share_media + " 分享成功", Toast.LENGTH_SHORT).show();
                                }
                            }
                        });
                    }

                    @Override
                    public void onError(final SHARE_MEDIA share_media, final Throwable throwable) {
                        if (throwable != null) {
                            Log.d("throw", "throw:" + throwable.getMessage());
                        }
                        activity.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(activity, share_media + " 分享失敗", Toast.LENGTH_SHORT).show();

                            }
                        });
                    }

                    @Override
                    public void onCancel(final SHARE_MEDIA share_media) {
                        activity.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(activity, share_media + " 分享取消", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                })
                .share();

        //新浪微博中圖文+鏈接
        /*new ShareAction(activity)
                .setPlatform(platform)
                .withText(description + " " + WebUrl)
                .withMedia(new UMImage(activity,imageID))
                .share();*/
    }
}

效果如下:

Demo下載地址:https://github.com/wildma/UMengThirdPartyShareLogin
如果對(duì)你有幫助拔鹰,點(diǎn)個(gè)star就是對(duì)我最大的支持~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仪缸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子列肢,更是在濱河造成了極大的恐慌恰画,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓷马,死亡現(xiàn)場(chǎng)離奇詭異拴还,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)欧聘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門片林,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人怀骤,你說(shuō)我怎么就攤上這事费封。” “怎么了蒋伦?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵弓摘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我痕届,道長(zhǎng)衣盾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任爷抓,我火速辦了婚禮势决,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蓝撇。我一直安慰自己果复,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布渤昌。 她就那樣靜靜地躺著虽抄,像睡著了一般走搁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迈窟,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天私植,我揣著相機(jī)與錄音,去河邊找鬼车酣。 笑死曲稼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的湖员。 我是一名探鬼主播贫悄,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼娘摔!你這毒婦竟也來(lái)了窄坦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凳寺,失蹤者是張志新(化名)和其女友劉穎鸭津,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肠缨,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡曙博,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怜瞒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片父泳。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吴汪,靈堂內(nèi)的尸體忽然破棺而出惠窄,到底是詐尸還是另有隱情,我是刑警寧澤漾橙,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布杆融,位于F島的核電站,受9級(jí)特大地震影響霜运,放射性物質(zhì)發(fā)生泄漏脾歇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一淘捡、第九天 我趴在偏房一處隱蔽的房頂上張望藕各。 院中可真熱鬧,春花似錦焦除、人聲如沸激况。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乌逐。三九已至竭讳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浙踢,已是汗流浹背绢慢。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洛波,地道東北人胰舆。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像奋岁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荸百,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容