1 获取静态内部类写法(注意$)
jclass buildCls = env->FindClass("android/os/Build$VERSION");
2 根据对象获取对象对应的class
jclass ctxCls = env->GetObjectClass(context);
3 根据全路径获取class
jclass listCls = env->FindClass("java/util/List");
4 返回值如果是list的时候,声明返回值方式
jmethodID queryIntentActivitiesMethodId = env->GetMethodID(packageManagerCls,"queryIntentActivities","(Landroid/content/Intent;I)Ljava/util/List;");
5 调用方法的方式
//获取方法id
jmethodID listIteratorMethodId = env->GetMethodID(listCls,"iterator","()Ljava/util/Iterator;");
//调用指定对象的方法
jobject listIterator = env->CallObjectMethod(list,listIteratorMethodId);
6 获取变量
//获取变量id
jfieldID activityInfoFieldId = env->GetFieldID(resolveInfoCls,"activityInfo","Landroid/content/pm/ActivityInfo;");
//获取变量的值
jobject activityInfo = env->GetObjectField(itemFirst,activityInfoFieldId);
7 参数是int类型的声明方式 (“I”)
jfieldID DONT_KILL_APPFieldId = env->GetStaticFieldID(packageManagerCls,"DONT_KILL_APP","I");
8 连着两个参数都是int的声明方式 (“II”)
jmethodID setComponentEnabledSettingMethodId = env->GetMethodID(packageManagerCls,"setComponentEnabledSetting",
"(Landroid/content/ComponentName;II)V");