我正在使用 Facebook SDK 并在我的应用中调用WebDialog
在Facebook上发布内容,它可以发布文字但不是图片,是否可以使用参数。{ {1}}要做什么?
如何使用putByteArray
解决此问题?
webDialog
答案 0 :(得分: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();
}
}
}
答案 1 :(得分:0)
单独picture
不会工作,你也必须提供一些link
。合乎逻辑的权利?
如果您想要添加图片,则在发布Feed时,必须有一些链接和desc / caption(可选)与之关联。由于Feed中的图片与您分享的链接相关联。这是饲料的样子 -
如果你一个人想张贴一张不是饲料的照片;您应该使用/photos
API代替并发布照片。
因此,请将picture
和link
添加到参数中,否则请更改API。