1
AndroidのメソッドをC++コードから呼び出して、Androidにインストールされているアプリのリストを取得します。見つかった最初のメソッド(getPackageManager()
)が、毎回getInstalledApplications()
メソッドがnilです。ここで何が間違っていますか?JNI関数を解決できませんでした:Android ndk
JNIEXPORT jobject JNICALL Java_com_example_davidt_ndkexample_TestNdk_getListOfInstalledApps
(JNIEnv* env, jobject obj, jobject activity){
jclass contextWrapperClass = env->FindClass("android/content/ContextWrapper");
jmethodID getPackageManagerId = env->GetMethodID(contextWrapperClass,"getPackageManager","()Landroid/content/pm/PackageManager;");
if (getPackageManagerId == 0) {
fprintf(stderr, "packageManager() not found");
}
jobject pm = env->CallObjectMethod(activity, getPackageManagerId);
jclass PackageManagerClass = env->GetObjectClass(pm);
jmethodID getInstalledApplicationsId = env->GetMethodID(PackageManagerClass,"getInstalledApplications","(I)[Landroid/content/pm/ApplicationInfo;");
if (getInstalledApplicationsId == 0) {
fprintf(stderr, "getInstalledApplications() not found");
}
return env->CallObjectMethod(pm, getInstalledApplicationsId);
}
サンキューなければなりません。あなたが正しいです。 –