我正在使用官方的Facebook库发布照片,效果很好。
但我有一个疑问。第一次发布时,图片会出现在墙上方的消息中。但第二次发布时,它不会创建新的帖子,而是编辑之前的帖子并显示“已添加2张图片”。
如果帖子位于墙的底部,并重新发布照片,则我们将看不到任何置顶的消息,而是在内部消息中发布。这将被隐藏。
您能否每次我上传照片时都创建一个新帖子?这可能吗?
我分享我的代码,也希望其他人能帮助。谢谢。
我刚刚发现,新的Facebook设计解决了这个问题。
如果帖子位于墙的底部,并重新发布照片,则我们将看不到任何置顶的消息,而是在内部消息中发布。这将被隐藏。
您能否每次我上传照片时都创建一个新帖子?这可能吗?
我分享我的代码,也希望其他人能帮助。谢谢。
OnClick:
mFacebook = new Facebook(APP_ID);
mFacebook.authorize(Principal.this, new String[]{ "user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {
@Override
public void onComplete(Bundle values) {
postImageonWall();
}
@Override
public void onFacebookError(FacebookError error) {
}
@Override
public void onError(DialogError e) {
}
@Override
public void onCancel() {
}
});
PostWall:
public void postImageonWall() {
byte[] data = null;
Bitmap bi = BitmapFactory.decodeFile(fotomontatgeInSD);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
Bundle params = new Bundle();
params.putString(Facebook.TOKEN, mFacebook.getAccessToken());
params.putString("method", "photos.upload");
params.putByteArray("picture", data);
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(mFacebook);
mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);
}
public class SampleUploadListener extends BaseRequestListener {
public void onComplete(final String response, final Object state) {
try {
// process the response here: (executed in background thread)
Log.d("Facebook-Example", "Response: " + response.toString());
JSONObject json = Util.parseJson(response);
final String src = json.getString("src");
// then post the processed result back to the UI thread
// if we do not do this, an runtime exception will be generated
// e.g. "CalledFromWrongThreadException: Only the original
// thread that created a view hierarchy can touch its views."
} catch (JSONException e) {
Log.w("Facebook-Example", "JSON Error in response");
} catch (FacebookError e) {
Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());
}
}
@Override
public void onFacebookError(FacebookError e, Object state) {
// TODO Auto-generated method stub
}
}
我刚刚发现,新的Facebook设计解决了这个问题。