|
18 | 18 | */
|
19 | 19 |
|
20 | 20 | #include <android/base/jni/jbytearray_ref.h>
|
| 21 | +#include <android/jsengine/api/WeexJSCoreApi.h> |
21 | 22 | #include "jsfunction_impl_android.h"
|
22 | 23 | #include "../../base/string/string_utils.h"
|
23 | 24 | #include "../../jniprebuild/jniheader/WXJsFunctions_jni.h"
|
@@ -103,59 +104,12 @@ void
|
103 | 104 | jsHandleCallNativeModule(JNIEnv *env, jobject object, jstring instanceId, jstring module,
|
104 | 105 | jstring method, jbyteArray
|
105 | 106 | arguments, jbyteArray options, jboolean from) {
|
106 |
| - |
107 |
| - |
108 |
| -#if JSAPI_LOG |
109 |
| - LOGD("[ExtendJSApi] handleCallNativeModule >>>> pageId: %s, module: %s, method: %s, arg: %s", |
110 |
| - jString2StrFast(env, instanceId).c_str(), jString2StrFast(env, module).c_str(), |
111 |
| - jString2StrFast(env, method).c_str(), jByteArray2Str(env, arguments).c_str()); |
112 |
| -#endif |
113 | 107 | JByteArrayRef argumentsRef(env, arguments);
|
114 | 108 | JByteArrayRef optionsRef(env, options);
|
115 | 109 |
|
116 | 110 |
|
117 |
| - // add for android support |
118 |
| - jobject result; |
119 |
| - result = static_cast<jobject>(Bridge_Impl_Android::getInstance()->callNativeModule( |
120 |
| - getCharFromJString(env, instanceId), |
121 |
| - getCharFromJString(env, module), |
122 |
| - getCharFromJString(env, method), |
123 |
| - argumentsRef.getBytes(), |
124 |
| - argumentsRef.length(), |
125 |
| - optionsRef.getBytes(), |
126 |
| - optionsRef.length())); |
127 |
| - |
128 |
| - jfieldID jTypeId = env->GetFieldID(jWXJSObject, "type", "I"); |
129 |
| - jint jTypeInt = env->GetIntField(result, jTypeId); |
130 |
| - jfieldID jDataId = env->GetFieldID(jWXJSObject, "data", "Ljava/lang/Object;"); |
131 |
| - jobject jDataObj = env->GetObjectField(result, jDataId); |
132 |
| - if (jTypeInt == 1) { |
133 |
| - if (jDoubleValueMethodId == NULL) { |
134 |
| - jclass jDoubleClazz = env->FindClass("java/lang/Double"); |
135 |
| - jDoubleValueMethodId = env->GetMethodID(jDoubleClazz, "doubleValue", "()D"); |
136 |
| - env->DeleteLocalRef(jDoubleClazz); |
137 |
| - } |
138 |
| - jdouble jDoubleObj = env->CallDoubleMethod(jDataObj, jDoubleValueMethodId); |
139 |
| - } else if (jTypeInt == 2) { |
140 |
| - jstring jDataStr = (jstring) jDataObj; |
141 |
| - //ret = std::move(createStringResult(env, jDataStr)); |
142 |
| - } else if (jTypeInt == 3) { |
143 |
| - jstring jDataStr = (jstring) jDataObj; |
144 |
| - //ret = std::move(createJSONStringResult(env, jDataStr)); |
145 |
| - } else if (jTypeInt == 4) { |
146 |
| - jbyteArray array = (jbyteArray)jDataObj; |
147 |
| - if(array != nullptr){ |
148 |
| - int length = env->GetArrayLength(array); |
149 |
| - void* data = env->GetByteArrayElements(array, 0); |
150 |
| - //ret = std::move(createByteArrayResult((const char*)data, length)); |
151 |
| - env->ReleaseByteArrayElements(array, (jbyte*)data, 0); |
152 |
| - } |
153 |
| - } |
154 |
| - env->DeleteLocalRef(jDataObj); |
155 |
| - if(result != nullptr){ |
156 |
| - env->DeleteLocalRef(result); |
157 |
| - } |
158 |
| - //return ret; |
| 111 | + _callNativeModule(getCharFromJString(env, instanceId), getCharFromJString(env, module), getCharFromJString(env, method), |
| 112 | + argumentsRef.getBytes(), argumentsRef.length(), optionsRef.getBytes(), optionsRef.length()); |
159 | 113 | }
|
160 | 114 |
|
161 | 115 | void
|
|
0 commit comments