gpt4 book ai didi

android - Facebook 和 Android SDK

转载 作者:行者123 更新时间:2023-11-29 21:36:06 25 4
gpt4 key购买 nike

我想在 Facebook 上分享手机 SD 卡上的一张图片。

我的问题是在运行应用程序后我可以看到以下消息

Myapplication would like to access your public profile and friend list.

但是当我按 OK 并转到我的 Facebook 页面时,我在那里看不到任何图像。

我正在按照 this link 上的说明进行操作我的代码在下面

public class PhotoActivity extends BaseFragmentActivity {
private static final String MIME_TYPE = "image/jpeg";

private Uri uri;
private ImageView mPhotoView;

private Session.StatusCallback mStatusCallback = new SessionStatusCallback();
private boolean mPostToWall = false;

private ImageButton retakeBtn;

private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state,
Exception exception) {

if (session.isOpened() && mPostToWall) {
share();

}
}
}

@Override
public void onStart() {
super.onStart();
Session.getActiveSession().addCallback(mStatusCallback);
}

@Override
public void onStop() {
super.onStop();
Session.getActiveSession().removeCallback(mStatusCallback);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Session session = Session.getActiveSession();
Session.saveSession(session, outState);
}

private void share() {


Bundle bundle = new Bundle();
mPhotoView.setDrawingCacheEnabled(true);
mPhotoView.buildDrawingCache();
Bitmap bmap = mPhotoView.getDrawingCache();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmap.compress(Bitmap.CompressFormat.JPEG, 80, stream);
byte[] byteArray = stream.toByteArray();

bundle.putByteArray("picture", byteArray);


WebDialog feedDialog = (
new WebDialog.FeedDialogBuilder(getApplicationContext(),
Session.getActiveSession(),
bundle))
.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();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.AppTheme);

uri = getIntent().getData();

setContentView(R.layout.activity_photo);

retakeBtn = (ImageButton) findViewById(R.id.retake_btn);

String lang = getString(R.string.lang);
if (lang.endsWith("FR")) {
retakeBtn.setImageResource(R.drawable.retake_xhdpi);
} else {
retakeBtn.setImageResource(R.drawable.retake_en_xhdpi);

}

// Facebook
Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);

Session session = Session.getActiveSession();
if (session == null) {
if (savedInstanceState != null) {
session = Session.restoreSession(this, null, mStatusCallback,
savedInstanceState);
}
if (session == null) {
session = new Session(this);
}
Session.setActiveSession(session);
if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {

session.openForPublish(new Session.OpenRequest(PhotoActivity.this)
.setCallback(mStatusCallback).setPermissions(Arrays.asList("photo_upload","publish_stream","publish_actions")));


}
}

mPhotoView = (ImageView) findViewById(R.id.photo);
mPhotoView.setImageURI(uri);

retakeBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

Intent intent = new Intent(PhotoActivity.this,
CameraActivity.class);
startActivity(intent);

finish();
}
});


}

@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.item_photo_activity, menu);
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(
com.actionbarsherlock.view.MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent(PhotoActivity.this, CameraActivity.class);
intent.putExtra("from_activity", 300);
startActivity(intent);
finish();
break;

case R.id.share_button:
Session session = Session.getActiveSession();

if (!session.isOpened() && !session.isClosed()) {
session.openForPublish(new Session.OpenRequest(PhotoActivity.this)
.setCallback(mStatusCallback).setPermissions(Arrays.asList("photo_upload","publish_stream","publish_actions")));


} else {
Session.openActiveSession(PhotoActivity.this, true,
mStatusCallback);
}
break;
}
return true;
}

最佳答案

您正在尝试将照片添加到不采用二进制数据的提要对话框。查看feed dialog documentation here ,“图片”参数只接受一个 URL。

如果要上传照片,需要获得“publish_actions”权限,调用Request.newUploadPhotoRequest方法。查看 SDK 附带的 Hello Facebook 示例应用程序,它演示了如何上传照片。

关于android - Facebook 和 Android SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18414886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com