1

私は、c#アプリとFacebookとの会話の中間となるJavaアプリケーションを作成しました。このヘルパークラスを使用すると、友達リストを取得してFacebookのウォールに投稿できます。

最近、Java関数の1つをmonodroidにバインドしようとして問題が発生しました。

私が使用しているJava関数は次​​のとおりです。

public void PostPicture(Activity mainActivity, String opponent, byte[] bytes, String picdescription, RequestListener listener)
{
    Bundle params = new Bundle();
    params.putString("name", picdescription);
    params.putByteArray("source", bytes);
    if(opponent != null)
    {
        params.putString("tags", opponent);
    }
    _asyncFacebook.request("me/photos", params, "POST", listener, null);        
}

私が抱えている問題は、byte[]バイトをバインドしようとしていることです。

JNIEnv.GetMethodID(_class_ref、 "PostPicture"、 "(Landroid / app / Activity; Ljava / lang / String; [Ljava / lang / Byte; Ljava / lang / String; Lcom / Hitcents / PictureThis / BaseRequestListener;)V");

ここで、_class_refは、「PostPicture」を含むJavaクラスの完全修飾名です。

[Ljava / lang /Byteはbyte[]への正しいバインディングではありませんか?

4

2 に答える 2

1

私は自分の質問に答えることができました。バイト配列をLjava/lang / Objectとして渡すだけで、Java側のbyte[]にキャストすることができました。

于 2012-06-01T13:36:18.363 に答える
1

Abyte[]はではなく、[Ljava/lang/Byte;です[B。A[Ljava/lang/Byte;は(インスタンスjava.lang.Byte[]の配列)になります。java.lang.Byte

于 2012-06-15T17:24:37.993 に答える