高手看一下这个 还有一些问题想请教 加一下我的QQ吧 谢谢 287605927 MSN:[email protected]
先定义一个 class B{
int i;
int j;},有另一个java类
class A{
int a;
B b = new B();
}
现在用jni方法 去得类A的参数的标号
jclass clazz = (*e)->findclass(e,"A");
jFieldID a= (*e)->GetfieldID(e, clazz, "a", "I");
jFiledID b =(*e)->GetfieldID(e,clazz,"?","?");取得类参数的ID该如何取??谢谢各位大侠给个建议啊!!另外取得了这个参数标识 我有怎么在jni中给这个标识里的两个参数i和j赋值呢?
先定义一个 class B{
int i;
int j;},有另一个java类
class A{
int a;
B b = new B();
}
现在用jni方法 去得类A的参数的标号
jclass clazz = (*e)->findclass(e,"A");
jFieldID a= (*e)->GetfieldID(e, clazz, "a", "I");
jFiledID b =(*e)->GetfieldID(e,clazz,"?","?");取得类参数的ID该如何取??谢谢各位大侠给个建议啊!!另外取得了这个参数标识 我有怎么在jni中给这个标识里的两个参数i和j赋值呢?
char * ResourceMgr::GetBmp(JNIEnv* env,jobject obj)
{
jclass jResMgr;
jmethodID jID;
jfieldID fid;
LOGI("ready to find java class");
jResMgr=env->FindClass("com/test/w4e/w4e");
if (jResMgr==NULL)
{
LOGI("java class not found");
return NULL;
}
else
{
LOGI("java class found");
fid = env->GetStaticFieldID(jResMgr, "res","Landroid/content/res/Resources;");
if (fid!=NULL)
{
jobject res = env->GetStaticObjectField(jResMgr, fid);
if (res==NULL)
{
LOGI("NULL RES");
}
else
{
LOGI("get res successed");
jID=env->GetMethodID(jResMgr,"PostBmptoJni","(ILandroid/content/res/Resources;)[B");
if (jID!=0)
{
LOGI("java method found ID=%d",jID);
jobject ob=env->AllocObject(jResMgr);
LOGI("ready to call java method");
//jbyteArray bl=(jbyteArray)env->CallObjectMethod(ob,jID,ji,res);
jbyteArray bl=(jbyteArray)env->CallObjectMethod(ob,jID,0,res);
jsize datalen=env->GetArrayLength(bl); LOGI("call java method complete bllen=%d",datalen);
if (bl!=NULL)
{
LOGI("jByte Array is not null");
//jbyte * jb;
//env->GetByteArrayRegion(bl,env->GetArrayLength(bl),env->GetArrayLength(bl),jb);
unsigned char* data = (unsigned char*)env->GetByteArrayElements(bl,0);
LOGI("data=%s size of data=%d",data,sizeof(data));
LOGI("ready to Create file");
unlink("/sdcard/hello.zip");
bool i=WriteStream("/sdcard/hello.zip",(char*)data,datalen);
LOGI("Write returns %d",i);
env->ReleaseByteArrayElements(bl,(jbyte*)data,0);
}
}
else
{
LOGI("java methord not found");
}
}
}
}
return NULL;
}