我正在开发使用谷歌游戏服务的实时多人游戏,我想在我的应用程序中实现Facebook共享。我已经进行了照片共享工作,但谷歌游戏服务的工作方式是,如果游戏的活动进入后台,则玩家离开房间,因此游戏将断开连接。有没有办法使用Facebook在其SDK中提供的ShareDialog而不将当前活动放在后台?我可以强制它半透明覆盖吗?
我试图强迫FacebookActivity使用Theme.Dialog样式,但这没有效果。
如果唯一的选择是创建我自己的自定义共享对话框,请提供一个如何实现它并将我的SharePhotoContent传递给它的示例。
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Dialog"
android:label="@string/app_name" >
<intent-filter>
<action android:name="transparent.text.FacebookActivity"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
答案 0 :(得分:1)
您需要将facebook sdk集成到您的应用程序中。
首先,在onCreate方法中创建一个ShareDialog实例。
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 > () {...
});
}
然后使用以下代码显示共享对话框。
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);
}
还处理onActivityResult中的回调。
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}