1

AndroidプラグインのデータをUnityからJavaに送信したいと思います。

これが私のUnityコードです:

AndroidJNI.AttachCurrentThread();
IntPtr cls_Activity = AndroidJNI.FindClass("com/unity3d/player/UnityPlayer");
    IntPtr fid_Activity = AndroidJNI.GetStaticFieldID(cls_Activity, "currentActivity", "Landroid/app/Activity;");
    IntPtr obj_Activity = AndroidJNI.GetStaticObjectField(cls_Activity, fid_Activity);                  
    Debug.Log("Setup Objects Complete");        

    IntPtr cls_OurAppNameActivityClass = AndroidJNI.FindClass("org/plugin/test/AdmobTestActivity"); 

    IntPtr startAdsMethod = AndroidJNI.GetMethodID(cls_OurAppNameActivityClass, "EnableAds", "(J)V");
    Debug.Log("before If Loop");        

    if (AndroidJNI.IsInstanceOf(obj_Activity, cls_OurAppNameActivityClass) != false)
    {
        //Debug.Log("Activity IS a OurAppNameActivity");
        jvalue[] myArray = new jvalue[1];
            myArray[0] = new jvalue();
            myArray[0].i = 12;
            AndroidJNI.CallVoidMethod(obj_Activity, startAdsMethod, myArray);                    

            Debug.Log("Activity Leaving a OurAppNameActivity");
    }

これが私のJavaコードです:

public void EnableAds(int qwe)
{       
    Log.i(APP_TAG, "Value" + qwe);
}

エラー:

05-16 13:11:30.906: W/dalvikvm(12315): threadid=8: thread exiting with uncaught exception (group=0x40018578)
05-16 13:11:30.921: E/AndroidRuntime(12315): FATAL EXCEPTION: GLThread 9
05-16 13:11:30.921: E/AndroidRuntime(12315): java.lang.NoSuchMethodError: EnableAds
05-16 13:11:30.921: E/AndroidRuntime(12315):    at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
05-16 13:11:30.921: E/AndroidRuntime(12315):    at com.unity3d.player.UnityPlayer.onDrawFrame(Unknown Source)
05-16 13:11:30.921: E/AndroidRuntime(12315):    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1368)
05-16 13:11:30.921: E/AndroidRuntime(12315):    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1123)

そして強制的に閉じます。

JavaコードのEnableAdv(int qwe)からint引数を削除すると、このアプリケーションは正常に機能します。

誰かが私に言うことができます、このコードに欠けているものは何ですか?

4

1 に答える 1

1

答えが見つかりました。

引数の型として「(J)V」を使用したいのですが、代わりに「(I)V」を使用する必要があります。

たとえば、Javaメソッドは次のとおりです。

long f(int n、String s、int [] arr); 次の型署名があります。

"(ILjava / lang / String; [I)V

詳細については、これを参照してください

于 2012-05-17T05:13:32.410 に答える