FaceBook 根據(jù)官方文檔 分享 二

了解完上一篇入門文檔后接下來建模

首先
您還需要在 ContentProvider 中設置 AndroidManifest.xml,其中 {APP_ID}是您的應用編號:

<provider 
android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}" 
android:name="com.facebook.FacebookContentProvider" 
android:exported="true"/>

實施分享時,您的應用不應預先填寫任何要分享的內容。這與 Facebook 開放平臺政策的要求不一樣,請參閱 Facebook 開放平臺政策第 2.3 條。

內容建模

Facebook SDK 4.0+ 版本提供用于分享內容的新模型。用戶想要分享的每種內容類型都有一個可用于表示該內容類型的類。對內容建模后,將分享界面添加到應用。
鏈接
用戶通過您的應用將鏈接分享到 Facebook 時,會包括在帖子中顯示的屬性:
contentURL,要分享的鏈接
contentTitle,表示鏈接中的內容的標題
imageURL,將在帖子中顯示的縮略圖的網(wǎng)址
內容的 contentDescription,通常為 2-4 個句子


按 ShareLinkContent
模型構建鏈接的分享內容。如需了解完整的屬性列表,請參閱ShareLinkContent
參考文檔
。

ShareLinkContent content = new ShareLinkContent.Builder() 
.setContentUrl(Uri.parse("https://developers.facebook.com")) 
.build();

注意:如果您的應用分享的是 iTunes 或 Google Play 商店的鏈接,我們不會發(fā)布您在分享中指定的任何圖片或說明。相反,我們會發(fā)布通過網(wǎng)絡爬蟲直接從應用商店搜刮的一些應用信息,其中可能不包括圖片。要預覽轉至 iTunes 或 Google Play 的鏈接分享,請在網(wǎng)址調試器中輸入您的網(wǎng)址。照片用戶可以使用分享對話框或自定義界面,通過您的應用將照片分享到 Facebook。照片大小必須小于 12MB用戶需要安裝版本 7.0 或以上的原生 Android 版 Facebook 應用


按 SharePhotoContent
模型構建照片的分享內容。如需了解完整的屬性列表,請參閱SharePhotoContent
參考文檔
。

Bitmap image = ...
SharePhoto photo = new SharePhoto.Builder() 
                .setBitmap(image) .build();
        SharePhotoContent content = new SharePhotoContent.Builder()
                   .addPhoto(photo) .build();

視頻
應用用戶可通過分享對話框或您專屬的自定義界面將視頻分享到 Facebook。
視頻大小必須小于 12MB。
按 ShareVideoContent
模型構建視頻的分享內容。如需了解完整的屬性列表,請參閱ShareVideoContent
參考文檔
。

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

多媒體
通過分享對話框,用戶可從您的應用向 Facebook 分享同時包含照片和視頻的內容。請注意以下事項:
用戶需要安裝版本 71 或以上的原生 Android 版 Facebook 應用。
照片大小必須小于 12MB。視頻大小必須小于 12MB。用戶每次可以分享最多包含 6 個照片和視頻元素的內容。使用 ShareMediaContent模型構建多媒體分享內容。如需了解完整的屬性列表,請參閱
ShareMediaContent
參考文檔

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);

添加分享界面
構建模型處理內容后,您可以觸發(fā) Facebook 分享界面或構建調用圖譜 API 的專屬界面。
按鈕
Facebook 為 Android 提供用于觸發(fā)分享的原生按鈕。

“贊”按鈕

“贊”按鈕是用戶與好友分享內容的快捷途徑。輕觸“贊”按鈕即可為應用中的內容點“贊”,并將內容分享到 Facebook。要添加“贊”按鈕,請將下列代碼片段添加到您的視圖:

LikeView likeView = (LikeView) findViewById(R.id.like_view);
likeView.setObjectIdAndType(
"https://www.facebook.com/FacebookDevelopers",
 LikeView.ObjectType.PAGE);
“分享”按鈕

“分享”按鈕將調用分享對話框。要添加“分享”按鈕,請將下列代碼片段添加到您的視圖:

ShareButton shareButton = (ShareButton)findViewById(R.id.fb_share_button);
shareButton.setShareContent(content);
“發(fā)送”按鈕

用戶可以使用“發(fā)送”按鈕,以私密方式向好友和使用 Facebook Messenger 的聯(lián)系人發(fā)送照片、視頻和鏈接?!鞍l(fā)送”按鈕將調用“消息”對話框。要向視圖添加“發(fā)送”按鈕,請將下列代碼片段添加到您的視圖:

SendButton sendButton = (SendButton)findViewById(R.id.fb_send_button);
sendButton.setShareContent(shareContent);
sendButton.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });

分享對話框

分享對話框會切換到原生 Android 版 Facebook 應用,并在發(fā)布帖子后將控制權交還您的應用。如果未安裝 Facebook 應用,會自動回退到網(wǎng)頁對話框。

ShareDialog.show(activityOrFragment, content);

例如,要為活動中的鏈接顯示 ShareDialog,請在 ShareDialog方法中創(chuàng)建 onCreate實例:

public class MainActivity extends FragmentActivity {
         CallbackManager callbackManager;
          ShareDialog shareDialog;
        @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              FacebookSdk.sdkInitialize(getApplicationContext());
                callbackManager = CallbackManager.Factory.create();
              shareDialog = new ShareDialog(this);
               // this part is optional
                  shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });
          }

然后顯示 ShareDialog:

if (ShareDialog.canShow(ShareLinkContent.class)) {
 ShareLinkContent linkContent = new ShareLinkContent.Builder()
               .setContentTitle("Hello Facebook")
               .setContentDescription(
               "The 'Hello Facebook' sample showcases simple Facebook integration")
               .setContentUrl(Uri.parse("http://developers.facebook.com/android"))
                .build();  
                shareDialog.show(linkContent);
}

最后在 callbackManager 中調用 SDK 的 onActivityResult,處理響應:

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}


“消息”對話框

“消息”對話框會切換到原生 Android 版 Messenger 應用,并在發(fā)布帖子后將控制權交還您的應用。

MessageDialog.show(activityOrFragment, content);
好了,先到這里了以后有機會繼續(xù)分享
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容