【问题标题】:how to post image in facebook wall with dialog如何使用对话框在 Facebook 墙上发布图像
【发布时间】:2014-03-31 07:12:21
【问题描述】:

我正在使用Facebook SDK并在我的应用程序中调用WebDialog在Facebook上发布一些东西,它可以发布文本但不能发布图片,它不能使用params.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();

【问题讨论】:

    标签: android facebook facebook-graph-api dialog facebook-android-sdk


    【解决方案1】:

    您可以为此使用 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();
                }
            }
        }
    

    【讨论】:

      【解决方案2】:

      单独picture 不行,你还得给一些link。逻辑对吗?

      在发布提要时,如果您想添加图片,则必须有一些链接和相关的说明/标题(可选)。因为 Feed 中的图片与您分享的链接相关联。以下是 Feed 的外观-

      如果您一个人想发布照片 - 这不是提要;您应该改用/photos API 并发布照片。

      所以将picturelink 添加到参数中,否则更改API。

      【讨论】:

      • 我想从手机发布图片,当我使用其他应用程序时,他们发布的图片会显示一个对话框来显示图片,也许可以输入一些单词。发送后,它会在手机中显示更新状态,所以..,怎么办?
      • 查看您正在谈论的应用程序,使用/feedpicturelink。它们是图片+链接。只需将picturelink 一起用于您的应用即可。
      • 我想从我的手机上传图片,但图片没有“链接”(我粘贴图片文件路径但显示错误)。如何从网络对话框上传图片到墙上?
      • 你不能!您必须为此使用 Graph API - 正如我在答案中提到的那样。不信,能否请您添加允许相同的应用程序的屏幕截图?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      相关资源
      最近更新 更多