0

グラフAPIを使用してFacebookに画像を投稿したいと思います。しかし、私の画像はドローアブルフォルダにあります。ここのところ:

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フォルダーにある画像を投稿するにはどうすればよいですか?前もって感謝します。

4

3 に答える 3

1

これは、ドローアブルから写真をアップロードする正しい方法です。必要なパラメーターは「写真」と「キャプション」のみであることに注意してください。

Bundle params = new Bundle();
params.putByteArray("photo", getImageAsData());
params.putString("caption", "Test caption lololol");
mAsyncRunner.request("me/photos", params, "POST", new PhotoUploadListener(), null);
于 2012-09-06T17:52:53.400 に答える
0
Bundle b=new Bundle();
b.putString("Picture","// Byte array value of ur image");

facebook.request("username/photos",b,"POST");
于 2012-09-06T10:39:04.750 に答える
0

BitmapDrawable を使用する代わりに、ドローアブルからビットマップに画像を直接取得して、それを bytearray に変換できます。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());
于 2012-09-17T03:51:47.983 に答える