Facebook携冤、Twitter分享功能實(shí)現(xiàn),采用官方SDK方式【Android】

本篇文章主要記錄自己采用官方SDK方式實(shí)現(xiàn)Facebook闲勺、Twitter的分享功能曾棕,F(xiàn)acebook實(shí)現(xiàn)起來(lái)還是很簡(jiǎn)單的,主要是Twitter的實(shí)現(xiàn)走了一些彎路菜循,在此做一個(gè)簡(jiǎn)單的記錄翘地。

官方文檔的鏈接:

Facebook

  1. https://developers.facebook.com/docs/sharing/android

Twitter

  1. 項(xiàng)目配置:https://dev.twitter.com/twitterkit/android/installation
  2. 發(fā)推文:https://dev.twitter.com/twitterkit/android/compose-tweets

Facebook分享

Facebook的官方文檔還是很詳細(xì)的,只要到開(kāi)發(fā)者控制臺(tái)創(chuàng)建應(yīng)用债朵,按照步驟一步一步就可以配置好子眶,還是很簡(jiǎn)單的,就不贅述了序芦。

這里簡(jiǎn)單將項(xiàng)目代碼中的幾個(gè)部分作簡(jiǎn)要總結(jié):

  1. 添加項(xiàng)目依賴(lài)
compile 'com.facebook.android:facebook-android-sdk:[4,5)'  //facebook分享
  1. 將facebook_app_id(開(kāi)發(fā)者控制臺(tái)創(chuàng)建應(yīng)用即可獲得臭杰,應(yīng)用編號(hào)就是facebook_app_id)配置到values/string.xml
 <!--替換自己的key-->
    <string name="facebook_app_id">1964233977152758</string>
  1. 注冊(cè)清單文件
<!--FACEBOOK分享-->
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />
        //FacebookContentProvider后的數(shù)字替換成自己的facebook_app_id
        <provider
            android:name="com.facebook.FacebookContentProvider"
            android:authorities="com.facebook.app.FacebookContentProvider1964233977152758"
            android:exported="true" />
        //瀏覽器分享卡片,未安裝客戶(hù)端時(shí)彈出
        <activity
            android:name="com.facebook.CustomTabActivity"
            android:exported="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="fb1964233977152758" />//fb后的數(shù)字替換成自己的facebook_app_id
            </intent-filter>
        </activity>
  1. activity中初始化以及添加分享事件
/**
     * facebook配置, 在oncreate()方法中調(diào)用
     */
    private void initFacebook() {
        //抽取成員變量
        callbackManager = CallbackManager.Factory.create();
        shareDialog = new ShareDialog(this);
        // this part is optional
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {

            @Override
            public void onSuccess(Sharer.Result result) {
                //分享成功的回調(diào),在這里做一些自己的邏輯處理
            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException error) {

            }
        });
    }
/**
     * 這是一個(gè)按鈕的點(diǎn)擊事件谚中,分享到facebook
     * 若未安裝facebook客戶(hù)端渴杆,則會(huì)跳轉(zhuǎn)到瀏覽器
     *
     * @param view
     */
    public void shareToFacebook(View view) {
        //這里分享一個(gè)鏈接,更多分享配置參考官方介紹:https://developers.facebook.com/docs/sharing/android
        if (ShareDialog.canShow(ShareLinkContent.class)) {
            ShareLinkContent linkContent = new ShareLinkContent.Builder()
                    .setContentUrl(Uri.parse("https://developers.facebook.com"))
                    .build();
            shareDialog.show(linkContent);
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //facebook的界面回調(diào)
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }

完整代碼已上傳至GitHub:https://github.com/and2long/ShareDemo

Twitter分享

相對(duì)于Facebook宪塔,完成Twitter的分享功能還是花費(fèi)了不少時(shí)間的磁奖,在網(wǎng)上搜索Twitter分享功能實(shí)現(xiàn),搜出來(lái)的文章都是說(shuō)用fabric某筐,相關(guān)的配置一大堆比搭,看著就頭疼(頓時(shí)懶癌癥就犯了)。
最后經(jīng)過(guò)仔細(xì)查閱官方文檔南誊,發(fā)現(xiàn)并不需要fabric即可實(shí)現(xiàn)身诺。

這里將實(shí)現(xiàn)步驟做簡(jiǎn)要總結(jié):

  1. 在Twitter開(kāi)發(fā)者控制臺(tái)創(chuàng)建應(yīng)用蜜托,獲得API Key和API Secret
createApp.png
  1. 添加項(xiàng)目依賴(lài)
compile 'com.twitter.sdk.android:twitter:3.0.0'             //twitter分享
compile 'com.twitter.sdk.android:tweet-composer:3.0.0'      //twitter分享,發(fā)布推文
  1. 將API Key和API Secret配置到values/string.xml
<!--替換自己的key-->
    <string name="com.twitter.sdk.android.CONSUMER_KEY">jFRczHoA7jym7X9DYOG6IMQab</string>
    <string name="com.twitter.sdk.android.CONSUMER_SECRET">X3hYoUjklg5c3QpLi6MPx487nmGSGjlMm77kTAWMeRJPt9Xmlu</string>
  1. 在application中初始化
public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //初始化Twitter
        Twitter.initialize(this);
    }
}
  1. 添加分享事件
/**
     * 分享到twitter
     * 若未安裝twitter客戶(hù)端霉赡,則會(huì)跳轉(zhuǎn)到瀏覽器
     *
     * @param view
     */
    public void shareToTwitter(View view) {
        //這里分享一個(gè)鏈接橄务,更多分享配置參考官方介紹:https://dev.twitter.com/twitterkit/android/compose-tweets
        try {
            TweetComposer.Builder builder = new TweetComposer.Builder(MainActivity.this)
                    .url(new URL("https://www.google.com/"));
            builder.show();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
  1. 分享結(jié)果回調(diào),這一點(diǎn)有所不同穴亏,Twitter的分享回調(diào)是用廣播的方式接受的蜂挪。所以需要自己寫(xiě)一個(gè)廣播處理回調(diào)事件,并注冊(cè)到清單文件嗓化。
public class MyResultReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (TweetUploadService.UPLOAD_SUCCESS.equals(intent.getAction())) {
            // success Twitter分享成功的回調(diào)
            final Long tweetId = intent.getExtras().getLong(TweetUploadService.EXTRA_TWEET_ID);
        } else {
            // failure
            final Intent retryIntent = intent.getExtras().getParcelable(TweetUploadService.EXTRA_RETRY_INTENT);
        }
    }
}
<!--Twitter分享的接受廣播-->
        <receiver
            android:name=".MyResultReceiver"
            android:exported="false">
            <intent-filter>
                <action android:name="com.twitter.sdk.android.tweetcomposer.UPLOAD_SUCCESS" />
                <action android:name="com.twitter.sdk.android.tweetcomposer.UPLOAD_FAILURE" />
            </intent-filter>

到這里棠涮,Twitter的分享功能就完成了。

有小伙伴說(shuō)分享后的回調(diào)么有走蟆湖,還是再檢查檢查自己的代碼吧故爵,這里直接貼出官方的文檔介紹以供參考:

twitter.png

完整代碼已上傳到GitHub:https://github.com/and2long/ShareDemo

這篇文章中的分享功能都是采用的標(biāo)準(zhǔn)分享方式,即點(diǎn)擊分享按鈕 --> 彈出分享對(duì)話框 --> 編輯分享內(nèi)容 --> 確定分享隅津。

但是有時(shí)候項(xiàng)目中的需求不是這樣的诬垂,比如:不彈出分享對(duì)話框,點(diǎn)擊分享按鈕便直接將需要分享的內(nèi)容直接分享出去伦仍。

這個(gè)需求官方文檔貌似沒(méi)有給出詳細(xì)的實(shí)現(xiàn)方式结窘,由于篇幅原因,這里就不再寫(xiě)出了充蓝,如果有小伙伴有同樣的需求隧枫,可私信我。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谓苟,一起剝皮案震驚了整個(gè)濱河市官脓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涝焙,老刑警劉巖卑笨,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異仑撞,居然都是意外死亡赤兴,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)隧哮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)桶良,“玉大人,你說(shuō)我怎么就攤上這事沮翔≡煞” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)歧譬。 經(jīng)常有香客問(wèn)我岸浑,道長(zhǎng)搏存,這世上最難降的妖魔是什么瑰步? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮璧眠,結(jié)果婚禮上缩焦,老公的妹妹穿的比我還像新娘。我一直安慰自己责静,他們只是感情好袁滥,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著灾螃,像睡著了一般题翻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上腰鬼,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天嵌赠,我揣著相機(jī)與錄音,去河邊找鬼熄赡。 笑死姜挺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彼硫。 我是一名探鬼主播炊豪,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拧篮!你這毒婦竟也來(lái)了词渤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤串绩,失蹤者是張志新(化名)和其女友劉穎缺虐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赏参,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡志笼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了把篓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纫溃。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖韧掩,靈堂內(nèi)的尸體忽然破棺而出紊浩,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布坊谁,位于F島的核電站费彼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏口芍。R本人自食惡果不足惜箍铲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鬓椭。 院中可真熱鬧颠猴,春花似錦、人聲如沸小染。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)裤翩。三九已至资盅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踊赠,已是汗流浹背呵扛。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留臼疫,地道東北人择份。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像烫堤,于是被迫代替她去往敵國(guó)和親荣赶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,506評(píng)論 25 707
  • afinalAfinal是一個(gè)android的ioc鸽斟,orm框架 https://github.com/yangf...
    passiontim閱讀 15,401評(píng)論 2 45
  • 在說(shuō)明Mixin之前拔创,有必要提一下模板方法模式。 模板方法模式定義了一個(gè)算法步驟富蓄,并允許子類(lèi)為一個(gè)或者多個(gè)步>驟提...
    MontyOak閱讀 2,808評(píng)論 0 0
  • 【養(yǎng)生歌】常吃一點(diǎn)蒜中跌,消毒又保浇瞎摹反番;多食一點(diǎn)醋狗唉,不用上藥鋪;多吃一點(diǎn)姜口注,益壽保安康变擒;亂吃一頓傷,會(huì)吃千頓香寝志;干凈一身...
    勤錄閱讀 208評(píng)論 0 2
  • 行裝準(zhǔn)備:雪地靴娇斑,登山厚襪策添,羽絨褲,羽絨服(內(nèi)外兩件)毫缆,手套唯竹,帽子,圍巾苦丁,口罩 一早
    梧桐雨_yunzhi閱讀 84評(píng)論 0 0