整合 Facebook 登入、Facebook 分享或 Facebook Gaming 後,除非停用自動應用程式事件記錄功能,否則系統會自動記錄並蒐集某些應用程式事件,以供事件管理工具使用。我們建議所有使用 Facebook 登入、Facebook 分享或 Facebook Gaming 的應用程式開發人員瞭解此功能的運作方式。如需深入瞭解系統會蒐集哪些資訊,以及如何停用自動應用程式事件記錄功能,請參閱自動應用程式事件記錄功能。
本指南說明如何讓您的 Android 應用程式用戶從您的應用程式分享至 Facebook。當用戶從您的應用程式進行分享時,其分享的內容會顯示在用戶的「動態時報」中。用戶分享至「動態時報」的內容也可以顯示在用戶朋友的「動態」中。用戶也可以從您的應用程式將內容分享至 Facebook Messenger。
進行分享時,應用程式不應該預先填入任何要分享的內容。預先填入內容和開發人員政策不一致。
以下範例的左側相片顯示應用程式中的「分享」對話方塊,右側相片則為 Facebook 應用程式中的貼文結果。

Android 專用分享 SDK 是 Facebook Android SDK 的元件。
若要在專案中使用 Facebook 分享 SDK,請以 Maven 相依性的方式加入。
在專案中開啟 your_app | Gradle Scripts | build.gradle(專案),然後將下列存放庫新增至 buildscript { repositories {}} 區塊:
mavenCentral()
在專案中開啟 your_app | Gradle 指令碼 | build.gradle(模組:應用程式),然後將下列編譯陳述式新增至 dependencies{} 區塊:
compile 'com.facebook.android:facebook-share:latest.release'
建置您的專案。
取得正確設定並連結至 Android 應用程式的 Facebook 應用程式編號。
產生 Android 開發密鑰雜湊並新增至開發人員設定的應用程式範例頁面。如需詳細資料,請參閱建立開發密鑰雜湊和執行應用程式範例。
將 ContentProvider 新增至您的 AndroidManifest.xml 檔,並將 {APP_ID} 設為您的應用程式編號:
<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
如果應用程式鎖定 Android 11 或更新版本,請將下列查詢區塊新增至您的 AndroidManifest.xml 檔案,讓 Facebook 應用程式可以看到您的應用程式:
<queries><provider android:authorities="com.facebook.katana.provider.PlatformProvider" /></queries>將 Facebook Activity 新增至您的專案,並將其加入您的 AndroidManifest.xml 檔。
Facebook SDK 4.0+ 版包含用於分享內容的新模型。用戶要分享的每一種內容類型都有一個供您用來代表該內容的類別。建立內容的模型之後,請在您的應用程式新增分享介面。
用戶從您的應用程式分享連結到 Facebook 時,contentURL 會與連結一同分享。請將連結的分享內容建立到 ShareLinkContent 模型中。如需所有屬性的清單,請參閱 ShareLinkContent 參考資料。

以下是如何觸發分享的範例:
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse("https://developers.facebook.com"))
.build();若要預覽 Google Play 或 App Store 的連結分享,請在分享偵錯工具中輸入您的網址。
如果應用程式分享內容中,含有前往任何應用程式的 Google Play 或 App Store 連結,則系統會忽略分享時包含的說明和圖像,改為直接從商店抓取應用程式的名稱和圖像(如果商店中沒有圖像,則分享時便不會附圖)。
用戶可以使用「分享」對話方塊,從您的應用程式將相片分享至 Facebook。若要分享,用戶需要安裝 Android 版 Facebook 應用程式 7.0 版或更高版本。

請將相片的分享內容建立到 SharePhotoContent 模型中。如需所有屬性的清單,請參閱 SharePhotoContent 參考資料。
Bitmap image = ...
SharePhoto photo = new SharePhoto.Builder()
.setBitmap(image)
.build();
SharePhotoContent content = new SharePhotoContent.Builder()
.addPhoto(photo)
.build();您應用程式的用戶可以使用「分享」對話方塊,將影片分享至 Facebook。
請將影片的分享內容建立到 ShareVideoContent 模型中。如需所有屬性的清單,請參閱 ShareVideoContent 參考資料。
Uri videoFileUri = ...
ShareVideo = new ShareVideo.Builder()
.setLocalUrl(videoUrl)
.build();
ShareVideoContent content = new ShareVideoContent.Builder()
.setVideo(video)
.build();用戶可以使用「分享」對話方塊,將您應用程式中的相片和影片組合分享到 Facebook。注意事項:
使用 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);透過建立模型處理內容之後,您可以觸發 Facebook 分享介面。
Facebook 在 Android 提供可觸發分享的原生按鈕。
「分享」按鈕將會呼叫「分享」對話方塊。若要新增「分享」按鈕,請在您的檢視中新增下列程式碼片段:
ShareButton shareButton = (ShareButton)findViewById(R.id.fb_share_button); shareButton.setShareContent(content);
「分享」對話方塊會切換至原生 Android 版 Facebook 應用程式,然後在發佈貼文之後將控制權返回至您的應用程式。視您使用的 SDK 而定,用戶可能需要點按返回箭頭圖示才能返回您的應用程式。如果未安裝 Facebook 應用程式,「分享」對話方塊將會自動切換回網頁型對話方塊。
ShareDialog.show(activityOrFragment, content);
例如,若要對活動中的連結顯示 ShareDialog,請在 onCreate 方法中建立 ShareDialog 實例:
public class MainActivity extends FragmentActivity {
CallbackManager callbackManager;
ShareDialog shareDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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()
.setContentUrl(Uri.parse("http://developers.facebook.com/android"))
.build();
shareDialog.show(linkContent);
}最後在 onActivityResult 中呼叫 SDK 的 callbackManager 以處理回應:
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}如果您是使用 AndroidX 活動或片段,則不必覆寫 onActivityResult。
「訊息」對話方塊會切換至原生 Android 版 Messenger 應用程式,然後在發佈貼文之後將控制權返回至您的應用程式。視您使用的 SDK 而定,用戶可能需要點按返回箭頭圖示才能返回您的應用程式。
MessageDialog.show(activityOrFragment, content);
您可以指定單一主題標籤與分享的相片、連結或影片一同顯示。此主題標籤也會顯示在「分享」對話方塊中,且用戶可以在發佈前將其移除。
以下為新增主題標籤到連結分享的範例。
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse("https://developers.facebook.com"))
.setShareHashtag(new ShareHashtag.Builder()
.setHashtag("#ConnectTheWorld")
.build());
.build();