Как отобразить диалоговое окно публикации при использовании интеграции Facebook с Android с использованием последней версии facebookSDK на мобильных телефонах Android? - PullRequest
1 голос
/ 17 января 2012

С помощью этого поста и этого урока Мне удалось интегрировать Facebook в моем приложении Android с последней версией FacebookSDK. Я хочу опубликовать некоторый контент, поэтому использовал учебник и он работает совершенно нормально. Моя единственная проблема заключается в том, что я не могу видеть диалоговое окно публикации (как упомянуто в учебном пособии), где, как я хочу, чтобы оно отображалось так, как я хочу, чтобы пользователь изменил содержимое сообщения. Как мне это сделать?

Вот снимок кода, который я использую для публикации сообщения.

public void postToWall(String message){
    Bundle parameters = new Bundle();
            parameters.putString("message", message);
            parameters.putString("description", "topic share");
            try {
                facebook.request("me");

        String response = facebook.request("me/feed", parameters, "POST");

        Log.d("Tests", "got response: " + response);
        if (response == null || response.equals("") ||
                response.equals("false")) {
            showToast("Blank response.");
        }
        else {
            showToast("Message posted to your facebook wall!");
        }
        finish();
    } catch (Exception e) {
        showToast("Failed to post to wall!");
        e.printStackTrace();
        finish();
    }
}

с разрешениями как

private static final String[] PERMISSIONS = new String[] {"publish_stream"};

Я также обнаружил, что есть нечто, называемое facebook.dialog (), но я не знаю, где и как его использовать.

Итак, как мне показать диалоговое окно публикации?

1 Ответ

1 голос
/ 17 января 2012

Код, который вы использовали, будет публиковаться на стене без диалога.

Моя единственная проблема в том, что я не могу видеть диалоговое окно публикации (как упомянуто в руководстве), где я хочубудет отображаться так, как я хочу, чтобы пользователь изменил содержимое сообщения.

Используйте приведенный ниже фрагмент кода для отображения диалога:

private void post_facebook() {
    Bundle parameters = new Bundle();
    parameters.putString("method", "stream.publish");

    JSONObject attachment = new JSONObject();

    try {
        attachment.put("message", "Messages");
        attachment.put("name", "Check out");
        attachment.put("href", "http://www.google.com");
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    parameters.putString("attachment", attachment.toString());

    authenticatedFacebook.dialog(Activity.this, "stream.publish",parameters, new TestUiServerListener());
}

    public class TestUiServerListener implements DialogListener {
    public void onComplete(Bundle values) {
        final String postId = values.getString("post_id");
        if (postId != null) {
            new AsyncFacebookRunner(authenticatedFacebook).request(postId,new TestPostRequestListener());
        } else {
            Activity.this.runOnUiThread(new Runnable() {
                public void run() {
                }
            });
        }
    }

    public void onCancel() {
    }

    public void onError(DialogError e) {
        e.printStackTrace();
    }

    public void onFacebookError(FacebookError e) {
        e.printStackTrace();
    }
}

public class TestPostRequestListener implements RequestListener {
    public void onComplete(final String response, final Object state) {
        try {
            JSONObject json = Util.parseJson(response);
            String postId = json.getString("id");
            Activity.this.runOnUiThread(new Runnable() {
                public void run() {
                }
            });
        } catch (Throwable e) {
        }
    }

    public void onFacebookError(FacebookError e, final Object state) {
        e.printStackTrace();
    }

    public void onFileNotFoundException(FileNotFoundException e,
            final Object state) {
        e.printStackTrace();
    }

    public void onIOException(IOException e, final Object state) {
        e.printStackTrace();
    }

    public void onMalformedURLException(MalformedURLException e,
            final Object state) {
        e.printStackTrace();
    }
}

Где authenticatedFacebook - объект Facebook.

...