【发布时间】:2015-08-31 20:27:35
【问题描述】:
我正在尝试从 JNI 层调用 NfcAdapter.setNdefPushMessageCallback。
您必须知道相同的签名是
setNdefPushMessageCallback(NfcAdapter.CreateNdefMessageCallback callback, Activity activity, Activity... activities)
我已经参考了这个问题one here和another one
我已经处理了所有这些建议。我怀疑它一定与第二个有关。
这是我的代码:
jmethodID methodId = (*env)->GetMethodID(
env, cls, "setNdefPushMessageCallback",
"(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback;Landroid/app/Activity;[Landroid/app/Activity;)V");
(*env)->CallVoidMethod(env, g_adapter, methodId, g_nfcCallback, g_activity);
在[Landroid/app/Activity; (va_list),我没有给出任何其他论点。
如果是 Java,这是完全可以接受的:
NfcAdapter.setNdefPushMessageCallback(callback, activity);
请给我建议解决方案
【问题讨论】:
-
尝试对预期的可变参数使用
NULL引用。 -
我已经尝试过了。我收到以下错误
08-28 09:19:46.161: E/AndroidRuntime(22601): Process: org.iotivity.ca.sample_service, PID: 22601 08-28 09:19:46.161: E/AndroidRuntime(22601): java.lang.NullPointerException: Attempt to get length of null array 08-28 09:19:46.161: E/AndroidRuntime(22601): at android.nfc.NfcAdapter.setNdefPushMessageCallback(NfcAdapter.java:1279)
标签: java android java-native-interface