SDL: Fixed java.lang.ClassNotFoundException: Didn't find class "android.window.OnBackInvokedCallback" on Android 8.0

https://github.com/libsdl-org/SDL/commit/6880bed495226e7b87e9ef08fc552c0bcfd5fc29

From 6880bed495226e7b87e9ef08fc552c0bcfd5fc29 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Wed, 29 Jul 2026 19:45:40 -0700
Subject: [PATCH] Fixed java.lang.ClassNotFoundException: Didn't find class
 "android.window.OnBackInvokedCallback" on Android 8.0

---
 .../main/java/org/libsdl/app/SDLActivity.java | 41 ++++++++++---------
 1 file changed, 22 insertions(+), 19 deletions(-)

diff --git a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
index b495e8773dda6..b1dfa9f221d88 100644
--- a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
+++ b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
@@ -787,25 +787,7 @@ public void onBackPressed() {
         }
     }
 
-    static OnBackInvokedCallback backButtonCallback = new OnBackInvokedCallback() {
-        Handler mBackKeyHandler;
-
-        @Override
-        public void onBackInvoked() {
-            if (mBackKeyHandler == null) {
-                mBackKeyHandler = new Handler(Looper.getMainLooper());
-            }
-
-            onNativeKeyDown(KeyEvent.KEYCODE_BACK);
-            mBackKeyHandler.postDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    onNativeKeyUp(KeyEvent.KEYCODE_BACK);
-                }
-            }, 500);
-        }
-    };
-
+    static OnBackInvokedCallback backButtonCallback;
     static boolean mBackKeyTrapEnabled = false;
     public static void setBackButtonTrapEnabled(boolean enabled) {
 
@@ -819,6 +801,27 @@ public static void setBackButtonTrapEnabled(boolean enabled) {
             return;
         }
 
+        if (backButtonCallback == null) {
+            backButtonCallback = new OnBackInvokedCallback() {
+                Handler mBackKeyHandler;
+
+                @Override
+                public void onBackInvoked() {
+                    if (mBackKeyHandler == null) {
+                        mBackKeyHandler = new Handler(Looper.getMainLooper());
+                    }
+
+                    onNativeKeyDown(KeyEvent.KEYCODE_BACK);
+                    mBackKeyHandler.postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            onNativeKeyUp(KeyEvent.KEYCODE_BACK);
+                        }
+                    }, 500);
+                }
+            };
+        }
+
         if (enabled) {
             mSingleton.getOnBackInvokedDispatcher().registerOnBackInvokedCallback(OnBackInvokedDispatcher.PRIORITY_DEFAULT, backButtonCallback);
         }