diff --git a/.changes/fix-clipboard-warnings-sdk.md b/.changes/fix-clipboard-warnings-sdk.md
new file mode 100644
index 00000000..b98f222e
--- /dev/null
+++ b/.changes/fix-clipboard-warnings-sdk.md
@@ -0,0 +1,6 @@
+---
+"clipboard-manager": patch
+"clipboard-manager-js": patch
+---
+
+Fix warnings and clear implementation on Android below SDK 28.
diff --git a/examples/api/src/views/Clipboard.svelte b/examples/api/src/views/Clipboard.svelte
index c86282d9..f16a7d71 100644
--- a/examples/api/src/views/Clipboard.svelte
+++ b/examples/api/src/views/Clipboard.svelte
@@ -1,59 +1,59 @@
@@ -65,6 +65,5 @@
/>
-
diff --git a/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt b/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt
index 942a8317..ebb931b4 100644
--- a/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt
+++ b/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt
@@ -4,12 +4,12 @@
package app.tauri.clipboard
-import android.R.attr.value
import android.app.Activity
import android.content.ClipData
import android.content.ClipDescription
import android.content.ClipboardManager
import android.content.Context
+import android.os.Build
import app.tauri.annotation.Command
import app.tauri.annotation.InvokeArg
import app.tauri.annotation.TauriPlugin
@@ -59,6 +59,9 @@ internal class ReadClipDataSerializer @JvmOverloads constructor(t: Class {
+ throw Exception("unimplemented ReadClipData")
+ }
}
jgen.writeEndObject()
@@ -93,7 +96,7 @@ class ClipboardPlugin(private val activity: Activity) : Plugin(activity) {
is WriteOptions.PlainText -> {
ClipData.newPlainText(args.label, args.text)
} else -> {
- invoke.reject("Invalid write options provided")
+ invoke.reject("unimplemented WriteOptions")
return
}
@@ -128,7 +131,11 @@ class ClipboardPlugin(private val activity: Activity) : Plugin(activity) {
@Command
fun clear(invoke: Invoke) {
if (manager.hasPrimaryClip()) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
manager.clearPrimaryClip()
+ } else {
+ manager.setPrimaryClip(ClipData.newPlainText("", ""))
+ }
}
invoke.resolve()
}
diff --git a/plugins/clipboard-manager/guest-js/index.ts b/plugins/clipboard-manager/guest-js/index.ts
index f09754e6..d39e2f81 100644
--- a/plugins/clipboard-manager/guest-js/index.ts
+++ b/plugins/clipboard-manager/guest-js/index.ts
@@ -114,6 +114,11 @@ async function writeHtml(html: string, altHtml?: string): Promise {
/**
* Clears the clipboard.
+ *
+ * #### Platform-specific
+ *
+ * - **Android:** Only supported on SDK 28+. For older releases we write an empty string to the clipboard instead.
+ *
* @example
* ```typescript
* import { clear } from '@tauri-apps/plugin-clipboard-manager';