如何通过 NDK 获取当前正在运行的 App 的版本?
我可以得到名称和包,但我需要版本。
最佳答案
试试这段代码,
int getVersionCode(JNIEnv *env, jobject context) {
jstring packageName;
jobject packageManagerObj;
jobject packageInfoObj;
jclass contextClass = env->GetObjectClass( context);
jmethodID getPackageNameMid = env->GetMethodID( contextClass, "getPackageName", "()Ljava/lang/String;");
jmethodID getPackageManager = env->GetMethodID( contextClass, "getPackageManager", "()Landroid/content/pm/PackageManager;");
jclass packageManagerClass = env->FindClass("android/content/pm/PackageManager");
jmethodID getPackageInfo = env->GetMethodID( packageManagerClass, "getPackageInfo", "(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;");
jclass packageInfoClass = env->FindClass("android/content/pm/PackageInfo");
jfieldID versionCodeFid = env->GetFieldID( packageInfoClass, "versionCode", "I");
packageName = (jstring)env->CallObjectMethod( context, getPackageNameMid);
packageManagerObj = env->CallObjectMethod(context, getPackageManager);
packageInfoObj = env->CallObjectMethod( packageManagerObj,getPackageInfo, packageName, 0x0);
int versionCode = env->GetIntField( packageInfoObj, versionCodeFid);
return versionCode;
}
关于android - 通过 NDK 获取应用程序版本(无 java 层),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33078365/