Browse Source

Use clearPrimaryClip() on Android 9 and newer

Fixes https://github.com/libsdl-org/SDL/issues/8355
Sam Lantinga 2 weeks ago
parent
commit
34b09be6a5
1 changed files with 18 additions and 5 deletions
  1. 18 5
      android-project/app/src/main/java/org/libsdl/app/SDLActivity.java

+ 18 - 5
android-project/app/src/main/java/org/libsdl/app/SDLActivity.java

@@ -2190,7 +2190,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() {
@@ -2208,10 +2212,19 @@ class SDLClipboardHandler implements
     }
     }
 
 
     public void clipboardSetText(String string) {
     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
     @Override