我按照教程编写facebook api的ShareDialog,但它不起作用。启动活动后,在设置环境后,我会自动显示ShareDialog。如果我在显示该对话框时按下后退按钮,我的应用程序关闭对话框,然后再次打开它。似乎后退按钮没有被活动捕获。这是我的代码:
public class ShareScoreOnFb extends FragmentActivity {
private static UiLifecycleHelper uiHelper;
private static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_share_score_on_fb);
activity = this;
uiHelper = new UiLifecycleHelper(this, null);
uiHelper.onCreate(savedInstanceState);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data,
new FacebookDialog.Callback() {
@Override
public void onComplete(PendingCall pendingCall, Bundle data) {
String gesture = FacebookDialog
.getNativeDialogCompletionGesture(data);
if (gesture != null) {
if ("post".equals(gesture)) {
Toast.makeText(ShareScoreOnFb.this,
"success",
Toast.LENGTH_SHORT).show();
}
ShareScoreOnFb.this.finish();
}
ShareScoreOnFb.this.finish();
}
@Override
public void onError(PendingCall pendingCall,
Exception error, Bundle data) {
Toast.makeText(ShareScoreOnFb.this, error.toString(),
Toast.LENGTH_SHORT).show();
ShareScoreOnFb.this.finish();
}
});
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
uiHelper.onSaveInstanceState(outState);
}
@Override
protected void onResume() {
super.onResume();
uiHelper.onResume();
share();
}
@Override
public void onPause() {
super.onPause();
uiHelper.onPause();
}
@Override
public void onBackPressed() {
Log.i("TAG", "backpressed");
super.onBackPressed();
}
@Override
public void onDestroy() {
super.onDestroy();
uiHelper.onDestroy();
}
private void share() {
Intent intent = this.getIntent();
int myScore = intent.getIntExtra("MYSCORE", -1);
int oppScore = intent.getIntExtra("OPPONENT_SCORE", -1);
FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this)
.setName("Score").setLink("http://www.google.it")
.setDescription(myScore + " " + oppScore)
.setPicture("http://www.cs.cmu.edu/~junggon/tools/gear.png")
.build();
uiHelper.trackPendingDialogCall(shareDialog.present());
}
}
我找不到任何解决方案,我会疯了!
答案 0 :(得分:0)
当您调用本机共享对话框(在FacebookDialog中)时,它将在Facebook应用程序中启动另一个活动(称为活动Foo)。因此,如果您单击后退按钮,它会捕获后退按钮的Activity Foo,并完成Activity Foo。我相信这里是一系列事件:
答案 1 :(得分:0)
这将处理结果而无需按下。 我试过这个并取得了成功。
单击(对于链接示例(您可以修改内容)):
shareDialog = new ShareDialog(MainActivity.this);
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, ShareDialog.Mode.AUTOMATIC);
在onActivityResult方法中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}