#include <jni.h>
extern "C" {
jobject Java_YourPackageName_getHashMap(JNIEnv *env, jobject thiz) {
jclass mapClass = env->FindClass("java/util/HashMap");
jmethodID obj_init = env->GetMethodID(mapClass, "<init>", "(I)V");
jmethodID obj_put = env->GetMethodID(mapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
jobject hashMap = env->NewObject(mapClass, obj_init, 1);
/*
const char * input_data = "HelloWorld";
int input_data_length = strlen(input_data);
jbyteArray data = env->NewByteArray(input_data_length);
env->SetByteArrayRegion(data, 0, input_data_length, (const jbyte *)input_data);
env->CallObjectMethod(hashMap, obj_put, (jbyteArray)data, (jbyteArray)data);
env->DeleteLocalRef(data);
*/
jstring key = env->NewStringUTF("Hello");
jstring value = env->NewStringUTF("World");
env->CallObjectMethod(hashMap, obj_put, key, value);
env->DeleteLocalRef(key);
env->DeleteLocalRef(value);
//env->DeleteLocalRef(hashMap);
return hashMap;
}
}
Android Java code:
public native HashMap getHashMap();
static {
System.loadLibrary("native");
}
void usage() {
HashMap<String, String> mHashMap = getHashMap();
Log.d(tag, "HashMap size: "+mHashMap.size());
Log.d(tag, "HashMap data with key(Hello): "+mHashMap.get("Hello"));
Iterator it = mHashMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
Log.d(tag, "HashMap key: ["+pair.getKey()+"], value: ["+pair.getValue().toString()+"]");
}
}
沒有留言:
張貼留言