From 34b09be6a5c7361377e58526fac9d69acb4dd6f6 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 21 Sep 2025 23:04:08 -0700 Subject: [PATCH] Use clearPrimaryClip() on Android 9 and newer Fixes https://github.com/libsdl-org/SDL/issues/8355 --- .../main/java/org/libsdl/app/SDLActivity.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 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 4889dc2163..ed50935488 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 @@ -2190,7 +2190,11 @@ class SDLClipboardHandler implements } public boolean clipboardHasText() { - return mClipMgr.hasPrimaryClip(); + if (Build.VERSION.SDK_INT >= 28 /* Android 9 (P) */) { + return mClipMgr.hasPrimaryClip(); + } else { + return mClipMgr.hasText(); + } } public String clipboardGetText() { @@ -2208,10 +2212,19 @@ class SDLClipboardHandler implements } public void clipboardSetText(String string) { - mClipMgr.removePrimaryClipChangedListener(this); - ClipData clip = ClipData.newPlainText(null, string); - mClipMgr.setPrimaryClip(clip); - mClipMgr.addPrimaryClipChangedListener(this); + mClipMgr.removePrimaryClipChangedListener(this); + if (string.isEmpty()) { + if (Build.VERSION.SDK_INT >= 28 /* Android 9 (P) */) { + mClipMgr.clearPrimaryClip(); + } else { + ClipData clip = ClipData.newPlainText(null, ""); + mClipMgr.setPrimaryClip(clip); + } + } else { + ClipData clip = ClipData.newPlainText(null, string); + mClipMgr.setPrimaryClip(clip); + } + mClipMgr.addPrimaryClipChangedListener(this); } @Override