简体   繁体   中英

How getInstallerPackageName() in android JNI

I'm trying to use the method context.getPackageManager().getInstallerPackageName(context.getPackageName());

in android JNI interface. This is what I've already do, but I don't know how continue:

//   context
jclass native_context = env->GetObjectClass(thiz);

// context.getPackageManager()
jmethodID methodID_func = env->GetMethodID(native_context, "getPackageManager", "()Landroid/content/pm/PackageManager;");
jobject package_manager  = env->CallObjectMethod(thiz,methodID_func);
jclass pm_clazz = env->GetObjectClass(package_manager);

//packageManager.getInstallerPackageName()
jmethodID methodId_pm = env->GetMethodID(pm_clazz,"getInstallerPackageName","(Ljava/lang/String)Landroid/content/pm/getInstallerPackageName;");

//context.getPackageName()
jmethodID methodID_packagename = env->GetMethodID(native_context,"getPackageName","()Ljava/lang/String;");
jstring name_str = static_cast<jstring>(env->CallObjectMethod(thiz,methodID_packagename));

jstring intaller = static_cast<jstring>(env->CallObjectMethod(package_manager,methodId_pm,name_str));
LOGD("%s", getCharFromString(env, intaller));`

Logcat error: 06-04 18:18:41.445: A/art(28904): art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: JNI GetMethodID called with pending exception java.lang.NoSuchMethodError: no non-static method "Landroid/app/ApplicationPackageManager;.getInstallerPackageName(Ljava/lang/String)Landroid/content/pm/PackageManager/getInstallerPackageName;"

My goal is to get the installer package name in JNI interface and check piracy apps (Java is too weak).

Thank You.

getInstallerPackageName() 获取一个字符串并返回一个字符串,因此该行应该是:

jmethodID methodId_pm = env->GetMethodID(pm_clazz,"getInstallerPackageName","(Ljava/lang/String;)Ljava/lang/String;");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM