From 4ee94cb84581b6171e9e5b21e2df5dfb00ea280d Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Sat, 6 Sep 2025 14:25:27 +0200 Subject: [PATCH] Workaround clipboard issue on Samsung devices Fixes #6224 Co-authored-by: Simon Chan <1330321+yume-chan@users.noreply.github.com> --- .../main/java/com/genymobile/scrcpy/FakeContext.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/com/genymobile/scrcpy/FakeContext.java b/server/src/main/java/com/genymobile/scrcpy/FakeContext.java index b43e9e1b..7c0f3645 100644 --- a/server/src/main/java/com/genymobile/scrcpy/FakeContext.java +++ b/server/src/main/java/com/genymobile/scrcpy/FakeContext.java @@ -5,7 +5,6 @@ import com.genymobile.scrcpy.wrappers.ServiceManager; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.AttributionSource; -import android.content.ClipboardManager; import android.content.ContentResolver; import android.content.Context; import android.content.ContextWrapper; @@ -91,6 +90,11 @@ public final class FakeContext extends ContextWrapper { return this; } + @Override + public Context createPackageContext(String packageName, int flags) { + return this; + } + @Override public ContentResolver getContentResolver() { return contentResolver; @@ -104,9 +108,11 @@ public final class FakeContext extends ContextWrapper { return null; } - if (Context.CLIPBOARD_SERVICE.equals(name)) { + // "semclipboard" is a Samsung-internal service + // See + if (Context.CLIPBOARD_SERVICE.equals(name) || "semclipboard".equals(name)) { try { - Field field = ClipboardManager.class.getDeclaredField("mContext"); + Field field = service.getClass().getDeclaredField("mContext"); field.setAccessible(true); field.set(service, this); } catch (ReflectiveOperationException e) {