Use clearPrimaryClip() on Android 9 and newer

Fixes https://github.com/libsdl-org/SDL/issues/8355

(cherry picked from commit 34b09be6a5)
This commit is contained in:
Sam Lantinga
2025-09-21 23:04:08 -07:00
parent 936d94c2ee
commit c3480ca99c

View File

@@ -2196,7 +2196,11 @@ class SDLClipboardHandler implements
} }
public boolean clipboardHasText() { 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() { public String clipboardGetText() {
@@ -2214,10 +2218,19 @@ class SDLClipboardHandler implements
} }
public void clipboardSetText(String string) { public void clipboardSetText(String string) {
mClipMgr.removePrimaryClipChangedListener(this); mClipMgr.removePrimaryClipChangedListener(this);
ClipData clip = ClipData.newPlainText(null, string); if (string.isEmpty()) {
mClipMgr.setPrimaryClip(clip); if (Build.VERSION.SDK_INT >= 28 /* Android 9 (P) */) {
mClipMgr.addPrimaryClipChangedListener(this); 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 @Override