Imported Upstream version 1.2.0
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / nfc_adapter / android / canfcserver.c
index aa23348..0b06a1d 100644 (file)
@@ -133,7 +133,7 @@ CAResult_t CANfcCreateJniInterfaceObject()
     VERIFY_NON_NULL(g_jvm, TAG, "g_jvm");\r
 \r
     bool isAttached = false;\r
-    JNIEnv* env;\r
+    JNIEnv* env = NULL;\r
     jint res = (*g_jvm)->GetEnv(g_jvm, (void**) &env, JNI_VERSION_1_6);\r
     if (JNI_OK != res)\r
     {\r
@@ -148,7 +148,25 @@ CAResult_t CANfcCreateJniInterfaceObject()
         isAttached = true;\r
     }\r
 \r
-    jclass jni_NfcInterface = (*env)->FindClass(env, "org/iotivity/ca/CaNfcInterface");\r
+    jmethodID mid_getApplicationContext = CAGetJNIMethodID(env, "android/content/Context",\r
+                                                           "getApplicationContext",\r
+                                                           "()Landroid/content/Context;");\r
+\r
+    if (!mid_getApplicationContext)\r
+    {\r
+        OIC_LOG(ERROR, TAG, "Could not get getApplicationContext method");\r
+        return CA_STATUS_FAILED;\r
+    }\r
+\r
+    jobject jApplicationContext = (*env)->CallObjectMethod(env, g_context,\r
+                                                           mid_getApplicationContext);\r
+    if (!jApplicationContext)\r
+    {\r
+        OIC_LOG(ERROR, TAG, "Could not get application context");\r
+        return CA_STATUS_FAILED;\r
+    }\r
+\r
+    jclass jni_NfcInterface = (*env)->FindClass(env, CLASS_NFCINTERFACE);\r
     if (!jni_NfcInterface)\r
     {\r
         OIC_LOG(ERROR, TAG, "Could not get CaNfcInterface class");\r
@@ -164,7 +182,7 @@ CAResult_t CANfcCreateJniInterfaceObject()
     }\r
 \r
     jobject jni_nfcInstance = (*env)->NewObject(env, jni_NfcInterface,\r
-                                                NfcInterfaceConstructorMethod, g_context,\r
+                                                NfcInterfaceConstructorMethod, jApplicationContext,\r
                                                 g_activity);\r
     if (!jni_nfcInstance)\r
     {\r
@@ -225,7 +243,7 @@ CAResult_t CANFCStartServer()
 \r
     OIC_LOG(INFO, TAG, "CANFCStartServer : IN");\r
 \r
-    JNIEnv* env;\r
+    JNIEnv* env = NULL;\r
     jint res = (*g_jvm)->GetEnv(g_jvm, (void**) &env, JNI_VERSION_1_6);\r
     if (JNI_OK != res)\r
     {\r
@@ -240,7 +258,7 @@ CAResult_t CANFCStartServer()
         isAttached = true;\r
     }\r
 \r
-    jclass jni_NfcInterface = (*env)->FindClass(env, "org/iotivity/ca/CaNfcInterface");\r
+    jclass jni_NfcInterface = (*env)->FindClass(env, CLASS_NFCINTERFACE);\r
     if (!jni_NfcInterface)\r
     {\r
         OIC_LOG(ERROR, TAG, "Could not get CaNFCClientInterface class");\r
@@ -323,15 +341,8 @@ Java_org_iotivity_ca_CaNfcInterface_caNativeNfcCreateNdefMessage(JNIEnv *env, jo
         return NULL;\r
     }\r
 \r
-    jclass cid_string = (*env)->FindClass(env, "java/lang/String");\r
-    if (!cid_string)\r
-    {\r
-        OIC_LOG(ERROR, TAG, "Could not get NfcAdapter class for cid_string");\r
-        return NULL;\r
-    }\r
-\r
-    jmethodID mid_getBytes = (*env)->GetMethodID(env, cid_string, "getBytes",\r
-                                                 "(Ljava/lang/String;)[B");\r
+    jmethodID mid_getBytes = CAGetJNIMethodID(env, "java/lang/String", "getBytes",\r
+                                              "(Ljava/lang/String;)[B");\r
     if (!mid_getBytes)\r
     {\r
         OIC_LOG(ERROR, TAG, "Could not get methodId for mid_getBytes");\r
@@ -520,7 +531,7 @@ CAResult_t CANfcSendDataImpl(const CAEndpoint_t * ep, const char* data, uint32_t
 \r
     OIC_LOG(INFO, TAG, "CANfcSendDataImpl moved env outside");\r
     bool isAttached = false;\r
-    JNIEnv* env;\r
+    JNIEnv* env = NULL;\r
     jint res = (*g_jvm)->GetEnv(g_jvm, (void**) &env, JNI_VERSION_1_6);\r
     if (JNI_OK != res)\r
     {\r