hello , I want to get window object by dmGraphics::GetNativeAndroidActivity on android. but now I get nullpoint jobject by JNI. I don` known why, for this code , it was run on android project can get window object. so can u help me to resolved this problem , the source code like this.
--SOURCE
jclass activity_class = env->GetObjectClass(dmGraphics::GetNativeAndroidActivity());
jmethodID get_window_method = env->GetMethodID(activity_class, "getWindow",
"()Landroid/view/Window;");
jobject window_object = env->CallObjectMethod(dmGraphics::GetNativeAndroidActivity(),get_window_method);
Log::println("setFullscreen: get window object , %p",window_object);
--END
now i print window_object point address is 0x0. I checked that dmGraphics::GetNativeAndroidActivity() point address is not null , env is not null.
Please help , Thanks…
britzl
June 13, 2025, 8:50am
2
Check the safearea extension where we do something similar:
if (android_get_device_api_level() < 28)
{
return STATUS_NOT_AVAILABLE;
}
ThreadAttacher attacher;
JNIEnv *env = attacher.env;
ClassLoader class_loader = ClassLoader(env);
jclass cls = class_loader.load("android/app/Activity");
jobject jwindow = env->CallObjectMethod(dmGraphics::GetNativeAndroidActivity(), env->GetMethodID(cls, "getWindow", "()Landroid/view/Window;"));
cls = class_loader.load("android/view/Window");
jobject jdecorView = env->CallObjectMethod(jwindow, env->GetMethodID(cls, "getDecorView", "()Landroid/view/View;"));
cls = class_loader.load("android/view/View");
jobject jinsets = env->CallObjectMethod(jdecorView, env->GetMethodID(cls, "getRootWindowInsets", "()Landroid/view/WindowInsets;"));
cls = class_loader.load("android/view/WindowInsets");
jobject cutouts = env->CallObjectMethod(jinsets, env->GetMethodID(cls, "getDisplayCutout", "()Landroid/view/DisplayCutout;"));
1 Like
hello, Thanks for reply . I resolved this problem by using class_loader to load class, but i found that this method is only run android version >=api 28 ? if i want to run android 27 or lower , have any idea ?