4

このリンク hereに従って、SDK 3.2.1 をインストールし、uiHelper を次のように FacebookDialog と共に実装しました。

if (FacebookDialog.canPresentShareDialog(getApplicationContext(),
            FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) {
        // Publish the post using the Share Dialog
        Toast.makeText(this, "if", Toast.LENGTH_LONG).show();
        FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(
                this).setLink("https://developers.facebook.com/android")
                .build();
        uiHelper.trackPendingDialogCall(shareDialog.present());

    } else {
        Toast.makeText(this, "else", Toast.LENGTH_LONG).show();
        // Fallback. For example, publish the post using the Feed Dialog
        publishFeedDialog();
    }

publishFeedDialog()が持っているから:

    private void publishFeedDialog() {
    Bundle params = new Bundle();
    params.putString("name", "Facebook SDK for Android");
    params.putString("caption",
            "Build great social apps and get more installs.");
    params.putString(
            "description",
            "The Facebook SDK for Android makes it easier and faster to develop Facebook integrated Android apps.");
    params.putString("link", "https://developers.facebook.com/android");
    params.putString("picture",
            "https://raw.github.com/fbsamples/ios-3.x-howtos/master/Images/iossdk_logo.png");

    WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(this,
            Session.getActiveSession(), params)).setOnCompleteListener(
            new OnCompleteListener() {

                @Override
                public void onComplete(Bundle values,
                        FacebookException error) {
                    if (error == null) {
                        // When the story is posted, echo the success
                        // and the post Id.
                        final String postId = values.getString("post_id");
                        if (postId != null) {
                            Toast.makeText(getApplicationContext(),
                                    "Posted story, id: " + postId,
                                    Toast.LENGTH_SHORT).show();
                        } else {
                            // User clicked the Cancel button
                            Toast.makeText(getApplicationContext(),
                                    "Publish cancelled", Toast.LENGTH_SHORT)
                                    .show();
                        }
                    } else if (error instanceof FacebookOperationCanceledException) {
                        // User clicked the "x" button
                        Toast.makeText(getApplicationContext(),
                                "Publish cancelled", Toast.LENGTH_SHORT)
                                .show();
                    } else {
                        // Generic, ex: network error
                        Toast.makeText(getApplicationContext(),
                                "Error posting story", Toast.LENGTH_SHORT)
                                .show();
                    }
                }

            }).build();
    feedDialog.show();
}

これで、 FacebookDialog.canPresentShareDialogFb アプリが電話にインストールされてから publishFeedDialog() が呼び出された場合でも、常に false になります。しかし、この後アプリがクラッシュします。

これに対する解決策は何ですか?アプリが携帯電話にあるのに通常の Facebook ダイアログが表示されるのはなぜですか? (それが役立つ場合、私はLenevoモデルを使用しています)

4

1 に答える 1

1

共有ダイアログを機能させるには、新しい FB アプリが必要です。必ず最新のものをダウンロードしてください。

また、いいえ、共有ダイアログを有効にするためにログインする必要はありません。

于 2015-01-08T16:50:48.593 に答える