Android開發(fā)FaceBook圖文分享方法

方式一:集成方法ShareSDK(搬運于 官方文檔):

準備工作:

1诲祸、獲取正確配置并鏈接到 Android 應用的 Facebook 應用編號岛都。請參閱 Android 新手入門闽撤,添加 Facebook 應用編號

2老玛、生成 Android 密鑰散列并將其添加到開發(fā)者資料頁

代碼中獲取當前apk打包簽名密鑰散列嚷炉,將調試簽名和發(fā)布簽名的密鑰散列都配置到FaceBook開發(fā)者平臺的應用當中捅厂。也可以使用官方文檔的提供獲取方式避乏。

        PackageInfo info = null;
        try {
            info = getPackageManager().getPackageInfo("你APP包名",
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash: ", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

代碼工作:

項目build.gradle添加mavenCentral倉庫

repositories {
     // ...
     mavenCentral()
}

app build.gradle添加依賴

dependencies {
     // ...
     implementation 'com.facebook.android:facebook-share:5.15.3'
}

AndroidManifest.xml中添加相關權限爷耀、meta-data、FacebookActivity拍皮、FacebookContentProvider:

Note:應用ID為開發(fā)者平臺創(chuàng)建的應用編號

<!-- 網絡 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!-- 讀外存(根據(jù)實際具體情況申請) -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="應用ID"/>
<activity android:name="com.facebook.FacebookActivity" />
<provider android:authorities="com.facebook.app.FacebookContentProvider應用ID"
     android:name="com.facebook.FacebookContentProvider"
     android:exported="true"/>

分享引文鏈接:ShareLinkContent

ShareLinkContent content = new ShareLinkContent.Builder()
                .setContentUrl(Uri.parse("https://www.baidu.com"))
                .build();
        // 對話框
        ShareDialog shareDialog = new ShareDialog(this);
        // 分享回調
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
            @Override
            public void onSuccess(Sharer.Result result) {
                Log.e(TAG, "onSuccess");
            }

            @Override
            public void onCancel() {
                Log.e(TAG, "onCancel");
            }

            @Override
            public void onError(FacebookException error) {
                Log.e(TAG, "onError" + error.toString());
            }
        });
        shareDialog.show(content);

分享圖片:SharePhotoContent

String filePath = Environment.getExternalStorageDirectory() + "/image.jpg";
Bitmap image = BitmapFactory.decodeFile(filePath);
SharePhoto photo = new SharePhoto.Builder()
        .setBitmap(image)
        .build();
SharePhotoContent content = new SharePhotoContent.Builder()
        .addPhoto(photo)
        .build();

分享視頻:ShareVideoContent

Uri videoFileUri = ...
ShareVideo = new ShareVideo.Builder()
        .setLocalUrl(videoUrl)
        .build();
ShareVideoContent content = new ShareVideoContent.Builder()
        .setVideo(video)
        .build();

多媒體:ShareMediaContent

(1)用戶需要安裝 71 或更高版本的原生 Android 版 Facebook 應用歹叮。

(2)用戶每次可以分享最多包含 6 個照片和視頻元素的內容。

SharePhoto sharePhoto1 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
SharePhoto sharePhoto2 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
ShareVideo shareVideo1 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();
ShareVideo shareVideo2 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();

ShareContent shareContent = new ShareMediaContent.Builder()
    .addMedium(sharePhoto1)
    .addMedium(sharePhoto2)
    .addMedium(shareVideo1)
    .addMedium(shareVideo2)
    .build();

ShareDialog shareDialog = new ShareDialog(...);
shareDialog.show(shareContent, Mode.AUTOMATIC);

在舊版本的 Android 版 SDK 中铆帽,您的應用必須先檢查設備是否安裝了原生 Facebook 應用咆耿,然后才可打開分享對話框。若未安裝 Facebook 應用爹橱,則您必須自行提供代碼萨螺,才能調用回退對話框。

現(xiàn)在,SDK 將自動檢查設備上是否安裝了原生 Facebook 應用屑迂。如果未安裝浸策,SDK 會將用戶切換到默認瀏覽器并打開動態(tài)發(fā)布對話框

總結:

使用官方ShareDialog分享惹盼,部分手機無法調起分享功能庸汗,直接回調了onError方法,而且分享跳轉貌似依賴*墻網絡手报。推薦使用方式二蚯舱。

方式二:隱式意圖(同樣也適用其他APP,如Instagram掩蛤,Twitter等)

Intent.ACTION_SEND

Intent.ACTION_SEND_MULTIPLE(Facebook支持枉昏,其他應用不一定支持)

// 上下文實例
        Context context = ...;
        // Uri數(shù)組列表
        ArrayList<Uri> uriArrayList = ...;
        // 意圖
        Intent intent;
        // 單張圖片
        if (uriArrayList.size() == 1) {
            intent = new Intent(Intent.ACTION_SEND);
            intent.putExtra(Intent.EXTRA_STREAM, uriArrayList.get(0));
        } else {
            // 多張圖片
            intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
            intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriArrayList);
        }

        // 圖片
        intent.setType("image/*");
        // 視頻
//        intent.setType("video/*");
        // 多媒體
//        intent.setType("video/;image/");

        // Facebook包名
        intent.setPackage("com.facebook.katana");
        context.startActivity(Intent.createChooser(intent, title));

調用前,務必需要檢查分享目標應用是否安裝揍鸟。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末兄裂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子阳藻,更是在濱河造成了極大的恐慌晰奖,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腥泥,死亡現(xiàn)場離奇詭異匾南,居然都是意外死亡,警方通過查閱死者的電腦和手機蛔外,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門蛆楞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夹厌,你說我怎么就攤上這事豹爹。” “怎么了尊流?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵帅戒,是天一觀的道長。 經常有香客問我崖技,道長逻住,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任迎献,我火速辦了婚禮瞎访,結果婚禮上,老公的妹妹穿的比我還像新娘吁恍。我一直安慰自己扒秸,他們只是感情好播演,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伴奥,像睡著了一般写烤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拾徙,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天洲炊,我揣著相機與錄音,去河邊找鬼尼啡。 笑死暂衡,一個胖子當著我的面吹牛,可吹牛的內容都是我干的崖瞭。 我是一名探鬼主播狂巢,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼书聚!你這毒婦竟也來了唧领?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤寺惫,失蹤者是張志新(化名)和其女友劉穎疹吃,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體西雀,經...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年歉摧,在試婚紗的時候發(fā)現(xiàn)自己被綠了艇肴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡叁温,死狀恐怖再悼,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情膝但,我是刑警寧澤冲九,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站跟束,受9級特大地震影響莺奸,放射性物質發(fā)生泄漏。R本人自食惡果不足惜冀宴,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一灭贷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧略贮,春花似錦甚疟、人聲如沸仗岖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轧拄。三九已至,卻和暖如春讽膏,著一層夾襖步出監(jiān)牢的瞬間檩电,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工桅打, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留是嗜,地道東北人。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓挺尾,卻偏偏與公主長得像鹅搪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子遭铺,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349