title: JNI / Android : call to non static method in Java from C++?
body: <p>I have got the following JNI method which currently calls a static Java method:</p>
  
  <pre><code>void bindToMarketBillingServiceJNI(const char *  inappID)
      {
          JniMethodInfo t;
  
          if (JniHelper::getStaticMethodInfo(t
              , "com/mycompany/games/js/TestsDemo"
              , "bindToMarketBillingService"
              , "(Ljava/lang/String;)V"))
          {
              jstring stringArg1;
  
              if (! inappID)
              {
                  stringArg1 = t.env-&gt;NewStringUTF("1");
              }
              else
              {
                  stringArg1 = t.env-&gt;NewStringUTF(inappID);
              }
  
              t.env-&gt;CallStaticVoidMethod(t.classID, t.methodID, stringArg1);
  
              t.env-&gt;DeleteLocalRef(stringArg1);
              t.env-&gt;DeleteLocalRef(t.classID);
  
          }
      }
  </code></pre>
  
  <p>Here is my Java method :</p>
  
  <pre><code>public static void bindToMarketBillingService(final String mSku)
      {
  
  // Some code....
  
  }
  </code></pre>
  
  <p>Everything works fine.</p>
  
  <p>But now, I want to make my Java method NON STATIC. I thought that I just had to change:</p>
  
  <ul>
  <li>JniHelper::getStaticMethodInfo to JniHelper::getMethodInfo</li>
  <li>t.env->CallStaticVoidMethod to t.env->CallVoidMethod</li>
  <li>'public static void bindToMarketBillingService(final String mSku)' to 'public void bindToMarketBillingService(final String mSku)'</li>
  </ul>
  
  <p>But it crashes... (crash log below)</p>
  
  <p>Anybody knows how to solve this issue ?</p>
  
  <p>Thanks !!</p>
  
  <pre><code>08-20 11:54:11.009: A/libc(9379): Fatal signal 11 (SIGSEGV) at 0x0c1f4072 (code=1)
  08-20 11:54:11.109: D/dalvikvm(31592): GC_CONCURRENT freed 735K, 12% free 9743K/10951K, paused 4ms+7ms
  08-20 11:54:11.184: D/dalvikvm(1976): GC_CONCURRENT freed 1720K, 35% free 28243K/43399K, paused 5ms+13ms
  08-20 11:54:11.194: I/ApplicationPolicy(1976): getActualApplicationStateEnabled() : true
  08-20 11:54:11.219: D/PJ_MainApplication(9698): onApplicationCreate -&gt; Now
  08-20 11:54:11.334: D/dalvikvm(31592): GC_CONCURRENT freed 273K, 9% free 9981K/10951K, paused 3ms+3ms
  08-20 11:54:11.409: D/PJ_CrashManager(9698): registerHandler -&gt; Current handler class = com.android.internal.os.RuntimeInit$UncaughtHandler
  08-20 11:54:11.469: I/DEBUG(9331): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
  08-20 11:54:11.469: I/DEBUG(9331): Build fingerprint: 'samsung/GT-I9100/GT-I9100:4.0.3/IML74K/XWLPG:user/release-keys'
  08-20 11:54:11.469: I/DEBUG(9331): pid: 9379, tid: 9403  &gt;&gt;&gt; com.audioguidia.games.js &lt;&lt;&lt;
  08-20 11:54:11.469: I/DEBUG(9331): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0c1f4072
  08-20 11:54:11.474: I/DEBUG(9331):  r0 00000000  r1 10000000  r2 fffffffc  r3 4cbb9ef0
  08-20 11:54:11.474: I/DEBUG(9331):  r4 00273f98  r5 4c7f7fc4  r6 51134ad4  r7 415077f8
  08-20 11:54:11.474: I/DEBUG(9331):  r8 00000001  r9 0c1f4071  10 4cbb9ee4  fp 51134a58
  08-20 11:54:11.474: I/DEBUG(9331):  ip ffffffec  sp 51134a58  lr 4096864d  pc 40968aac  cpsr 00000030
  08-20 11:54:11.474: I/DEBUG(9331):  d0  0000000000000000  d1  3f80000000000000
  08-20 11:54:11.474: I/DEBUG(9331):  d2  0000000000000000  d3  0000000000000000
  08-20 11:54:11.474: I/DEBUG(9331):  d4  0000000000000000  d5  3f80000000000000
  etc....
  </code></pre>