как да публикувате изображение във facebook стената с диалогов прозорец

Използвам Facebook SDK и се обаждам на WebDialog в моето приложение, за да публикувам нещо във Facebook, то може да публикува текст, но не и изображение, не може ли да използва параметри.putByteArray да направи?

Как мога да разреша този проблем с webDialog?

Bundle params = new Bundle();
params.putByteArray("picture",  baos.toByteArray());

WebDialog feedDialog = (
    new WebDialog.FeedDialogBuilder(CameraActivity.this,
        mData.sFB,
        params))
    .setOnCompleteListener(new OnCompleteListener(){
        @Override
        public void onComplete(Bundle values,FacebookException error) {
        })
        .build();                   
feedDialog.show();

person user2724022    schedule 31.03.2014    source източник


Отговори (2)


Можете да използвате Simple facebook за това, той е много лесен за използване. Публикуваме пълен клас за справка, просто го препратете и проверете.

 package com.core;

    import android.content.Intent;
    import android.os.Bundle;
    import android.view.Window;
    import android.widget.Toast;

    import com.minoritybiz.BaseActivity;
    import com.minoritybiz.R;
    import com.minoritybiz.data.ConstantData;
    import com.minoritybiz.facebook.entities.Feed;
    import com.minoritybiz.facebooks.Permissions;
    import com.minoritybiz.facebooks.SimpleFacebook;
    import com.minoritybiz.facebooks.SimpleFacebookConfiguration;

    public class FacebookShareActivity extends BaseActivity {

        private SimpleFacebook simpleFacebook;
        private SimpleFacebookConfiguration.Builder simpleFacebookConfigurationBuilder;
        private SimpleFacebookConfiguration simpleFacebookConfiguration;

        private String IN_MESSAGE;
        private String IN_CAPTION;
        private String IN_NAME;
        private String IN_PICTURE;
        private String IN_LINK;
        private String IN_DESCRIPTION;

        private String shareLabel = "Download our mobile app on ITunes or Google Play";

        @Override
        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);

            setContentView(R.layout.ij_facebook_share);

            simpleFacebook = SimpleFacebook.getInstance(this);
            simpleFacebookConfigurationBuilder = new SimpleFacebookConfiguration.Builder();
            simpleFacebookConfigurationBuilder.setAppId(ConstantData.facebook_app_id);
            simpleFacebookConfigurationBuilder.setPermissions(new Permissions[] { Permissions.PUBLISH_ACTION, Permissions.PUBLISH_STREAM });
            simpleFacebookConfiguration = simpleFacebookConfigurationBuilder.build();
            SimpleFacebook.setConfiguration(simpleFacebookConfiguration);
            getIntentData();
            if (simpleFacebook.isLogin()) {
                publishFeed();
            } else {
                simpleFacebook.login(new OnLoginListener());
            }
        }

        private void getIntentData() {

            try {
                IN_NAME = this.getIntent().getStringExtra("NAME");
                IN_DESCRIPTION = this.getIntent().getStringExtra("DESCRIPTION");
                IN_LINK = this.getIntent().getStringExtra("LINK");
                IN_PICTURE = this.getIntent().getStringExtra("THUMB");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            simpleFacebook.onActivityResult(this, requestCode, resultCode, data);
            super.onActivityResult(requestCode, resultCode, data);
        }

        private void publishFeed() {
            final Feed feed = new Feed.Builder().setName(IN_NAME).setDescription(IN_DESCRIPTION).setPicture(IN_PICTURE).setMessage(ConstantData.eventCatName).setLink(IN_LINK)
                    .setMessage(shareLabel).build();
            simpleFacebook.publish(feed, new onPublishListener());
        }

        class OnLoginListener implements SimpleFacebook.OnLoginListener {

            @Override
            public void onLogin() {
                publishFeed();
            }

            @Override
            public void onNotAcceptingPermissions() {
            }

            @Override
            public void onThinking() {
            }

            @Override
            public void onException(Throwable throwable) {
            }

            @Override
            public void onFail(String reason) {
                Toast.makeText(FacebookShareActivity.this, "Failure", Toast.LENGTH_LONG).show();
            }
        }

        class onPublishListener implements SimpleFacebook.OnPublishListener {

            @Override
            public void onComplete(String id) {
                hideProgressDialog();
                Toast.makeText(FacebookShareActivity.this, "Posted Successfully...", Toast.LENGTH_LONG).show();
                finish();
            }

            @Override
            public void onThinking() {
                // showProgressDialog("Doing Facebook Sharing...",FacebookShareActivity.this,true);
                showProgressDialog();
            }

            @Override
            public void onException(Throwable throwable) {
                hideProgressDialog();
                throwable.printStackTrace();
            }

            @Override
            public void onFail(String reason) {
                hideProgressDialog();
                Toast.makeText(FacebookShareActivity.this, "Post failed due to some error...", Toast.LENGTH_LONG).show();
                finish();
            }
        }
    }
person Pratik Dasa    schedule 31.03.2014

Сам picture няма да работи, трябва да дадете и малко link. Логично ли е?

Докато публикувате емисия, ако искате да добавите снимка, трябва да има връзка и описание/надпис (по избор), свързани с нея. Тъй като картинката в емисия е свързана с връзката, която споделяте. Ето как изглежда емисия -

Ако вие сами искате да публикувате снимка – това не е емисия; вместо това трябва да използвате /photos API и да публикувате снимка.

Така че добавете picture и link към параметрите, в противен случай променете API.

person Sahil Mittal    schedule 31.03.2014
comment
Искам да публикувам изображение от мобилно устройство, когато използвам друго приложение, те публикуват снимка ще покажат диалогов прозорец за показване на снимка и може би могат да напишат някаква дума. След изпращане ще се покаже състоянието на актуализацията в мобилно устройство, така че..., как да направя то? - person user2724022; 01.04.2014
comment
Вижте приложенията, за които говорите, използвайте /feed с picture и link. Те са снимката + връзката към нея. Просто опитайте своя picture с link към приложението си. - person Sahil Mittal; 01.04.2014
comment
Искам да кача снимка от мобилния си телефон, но снимката няма връзка (поставям пътя на файла на картината, но показвам грешка). как да кача снимка на стената от webdialog? - person user2724022; 01.04.2014
comment
Не можеш! Трябва да използвате Graph API за това - както споменах в отговора. Ако не вярвате, можете ли да добавите екранни снимки на приложението, което позволява същото? - person Sahil Mittal; 01.04.2014