我想通过图形api将图像发布到Facebook。但我的图像是在drawable文件夹中。到目前为止:
public static void postToFacebook() {
Bundle params = new Bundle();
// shared with this
params.putString("caption", activityContext.getString(R.string.app_name));
// description of the program
params.putString("description", "bla bla bla bla bla bla");
// header of the description
params.putString("name", "train");
// callback url
params.putString("link","http://www.google.com.tr");
// put a personal message
params.putString("message", "my message");
// to put a photo
params.putByteArray("picture", getImageAsData());
try {
String response = FacebookUtility.mFacebook.request("/me/feed",
params, "POST");
if (response == null || response.equals("")
|| response.equals("false"))
Toast.makeText(activityContext, "Error.",
Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static byte[] getImageAsData() {
Drawable d = activityContext.getResources().getDrawable(R.drawable.icon);
Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] bitmapdata = stream.toByteArray();
return bitmapdata;
}
但是这不起作用......它没有发布我的图标,但它从网站获得了谷歌图标。我试着注释掉链接部分,但这次除了消息之外它没有发送任何内容。
我也尝试将位图设为:
Bitmap bitmap = BitmapFactory.decodeResource(activityContext.getResources(), R.drawable.icon);
但这也没有成功。
我见过:
Bitmap bi = BitmapFactory.decodeFile(pathonsdcard);
但我无法使用此方法获取位图,因为我没有pathonsdcard?
有什么建议吗? 那么我如何发布位于res / drawable文件夹中的图像? 提前谢谢。
答案 0 :(得分:1)
这是从drawable上传照片的正确方法。请注意,您需要的唯一参数是“照片”和“标题”。
Bundle params = new Bundle();
params.putByteArray("photo", getImageAsData());
params.putString("caption", "Test caption lololol");
mAsyncRunner.request("me/photos", params, "POST", new PhotoUploadListener(), null);
答案 1 :(得分:0)
Bundle b=new Bundle();
b.putString("Picture","// Byte array value of ur image");
facebook.request("username/photos",b,"POST");
答案 2 :(得分:0)
您可以直接将图像从drawable转换为位图,然后将其转换为bytearray,而不是使用BitmapDrawable。有时,bitmapdrawable会导致意外问题。
Bitmap bitmap = BitmapFactory.decodeResource(ctx.getResources(),
R.drawable.image);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] bitMapData = stream.toByteArray();
现在用它来发布 -
parameters.putByteArray("picture", bitMapData);
mAsyncFbRunner.request("me/feed", params, "POST", new WallPostListener());