diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 2140ce39f7a78..716daa216357d 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -114,10 +114,7 @@ public void setClipboardData(@NonNull String text) { @Override public boolean clipboardHasStrings() { - CharSequence data = - PlatformPlugin.this.getClipboardData( - PlatformChannel.ClipboardContentFormat.PLAIN_TEXT); - return data != null && data.length() > 0; + return PlatformPlugin.this.clipboardHasText(); } }; @@ -322,6 +319,12 @@ private void popSystemNavigator() { } } + private boolean clipboardHasText() { + ClipboardManager clipboard = + (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); + return clipboard.hasText(); + } + private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat format) { ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); diff --git a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java index b57d12bac6f81..3c5c60a93e105 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -117,6 +117,18 @@ public void platformPlugin_hasStrings() { clip = ClipData.newPlainText("", ""); clipboardManager.setPrimaryClip(clip); assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); + + clip = ClipData.newPlainText("", null); + clipboardManager.setPrimaryClip(clip); + clipboardManager.clearPrimaryClip(); + assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); + + clipboardManager.setPrimaryClip(null); + clipboardManager.clearPrimaryClip(); + assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); + + clipboardManager.clearPrimaryClip(); + assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); } @Config(sdk = 29)