diff --git a/server/src/main/java/com/genymobile/scrcpy/wrappers/ActivityManager.java b/server/src/main/java/com/genymobile/scrcpy/wrappers/ActivityManager.java index 93ed4528..4148b04b 100644 --- a/server/src/main/java/com/genymobile/scrcpy/wrappers/ActivityManager.java +++ b/server/src/main/java/com/genymobile/scrcpy/wrappers/ActivityManager.java @@ -5,6 +5,7 @@ import com.genymobile.scrcpy.Ln; import android.os.Binder; import android.os.IBinder; import android.os.IInterface; +import android.os.Process; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; @@ -48,10 +49,10 @@ public class ActivityManager { Object[] args; if (getContentProviderExternalMethodNewVersion) { // new version - args = new Object[]{name, ServiceManager.USER_ID, token, null}; + args = new Object[]{name, Process.ROOT_UID, token, null}; } else { // old version - args = new Object[]{name, ServiceManager.USER_ID, token}; + args = new Object[]{name, Process.ROOT_UID, token}; } // ContentProviderHolder providerHolder = getContentProviderExternal(...); Object providerHolder = method.invoke(manager, args); diff --git a/server/src/main/java/com/genymobile/scrcpy/wrappers/ClipboardManager.java b/server/src/main/java/com/genymobile/scrcpy/wrappers/ClipboardManager.java index f43a76bc..ebd36857 100644 --- a/server/src/main/java/com/genymobile/scrcpy/wrappers/ClipboardManager.java +++ b/server/src/main/java/com/genymobile/scrcpy/wrappers/ClipboardManager.java @@ -6,6 +6,7 @@ import android.content.ClipData; import android.content.IOnPrimaryClipChangedListener; import android.os.Build; import android.os.IInterface; +import android.os.Process; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -61,9 +62,9 @@ public class ClipboardManager { return (ClipData) method.invoke(manager, ServiceManager.PACKAGE_NAME); } if (alternativeMethod) { - return (ClipData) method.invoke(manager, ServiceManager.PACKAGE_NAME, null, ServiceManager.USER_ID); + return (ClipData) method.invoke(manager, ServiceManager.PACKAGE_NAME, null, Process.ROOT_UID); } - return (ClipData) method.invoke(manager, ServiceManager.PACKAGE_NAME, ServiceManager.USER_ID); + return (ClipData) method.invoke(manager, ServiceManager.PACKAGE_NAME, Process.ROOT_UID); } private static void setPrimaryClip(Method method, boolean alternativeMethod, IInterface manager, ClipData clipData) @@ -71,9 +72,9 @@ public class ClipboardManager { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { method.invoke(manager, clipData, ServiceManager.PACKAGE_NAME); } else if (alternativeMethod) { - method.invoke(manager, clipData, ServiceManager.PACKAGE_NAME, null, ServiceManager.USER_ID); + method.invoke(manager, clipData, ServiceManager.PACKAGE_NAME, null, Process.ROOT_UID); } else { - method.invoke(manager, clipData, ServiceManager.PACKAGE_NAME, ServiceManager.USER_ID); + method.invoke(manager, clipData, ServiceManager.PACKAGE_NAME, Process.ROOT_UID); } } @@ -108,9 +109,9 @@ public class ClipboardManager { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { method.invoke(manager, listener, ServiceManager.PACKAGE_NAME); } else if (alternativeMethod) { - method.invoke(manager, listener, ServiceManager.PACKAGE_NAME, null, ServiceManager.USER_ID); + method.invoke(manager, listener, ServiceManager.PACKAGE_NAME, null, Process.ROOT_UID); } else { - method.invoke(manager, listener, ServiceManager.PACKAGE_NAME, ServiceManager.USER_ID); + method.invoke(manager, listener, ServiceManager.PACKAGE_NAME, Process.ROOT_UID); } } diff --git a/server/src/main/java/com/genymobile/scrcpy/wrappers/ContentProvider.java b/server/src/main/java/com/genymobile/scrcpy/wrappers/ContentProvider.java index 47eae64d..6349d80e 100644 --- a/server/src/main/java/com/genymobile/scrcpy/wrappers/ContentProvider.java +++ b/server/src/main/java/com/genymobile/scrcpy/wrappers/ContentProvider.java @@ -6,6 +6,7 @@ import com.genymobile.scrcpy.SettingsException; import android.annotation.SuppressLint; import android.os.Bundle; import android.os.IBinder; +import android.os.Process; import java.io.Closeable; import java.lang.reflect.InvocationTargetException; @@ -80,7 +81,7 @@ public class ContentProvider implements Closeable { throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { if (attributionSource == null) { Class cl = Class.forName("android.content.AttributionSource$Builder"); - Object builder = cl.getConstructor(int.class).newInstance(ServiceManager.USER_ID); + Object builder = cl.getConstructor(int.class).newInstance(Process.ROOT_UID); cl.getDeclaredMethod("setPackageName", String.class).invoke(builder, ServiceManager.PACKAGE_NAME); attributionSource = cl.getDeclaredMethod("build").invoke(builder); } @@ -147,7 +148,7 @@ public class ContentProvider implements Closeable { public String getValue(String table, String key) throws SettingsException { String method = getGetMethod(table); Bundle arg = new Bundle(); - arg.putInt(CALL_METHOD_USER_KEY, ServiceManager.USER_ID); + arg.putInt(CALL_METHOD_USER_KEY, Process.ROOT_UID); try { Bundle bundle = call(method, key, arg); if (bundle == null) { @@ -163,7 +164,7 @@ public class ContentProvider implements Closeable { public void putValue(String table, String key, String value) throws SettingsException { String method = getPutMethod(table); Bundle arg = new Bundle(); - arg.putInt(CALL_METHOD_USER_KEY, ServiceManager.USER_ID); + arg.putInt(CALL_METHOD_USER_KEY, Process.ROOT_UID); arg.putString(NAME_VALUE_TABLE_VALUE, value); try { call(method, key, arg); diff --git a/server/src/main/java/com/genymobile/scrcpy/wrappers/ServiceManager.java b/server/src/main/java/com/genymobile/scrcpy/wrappers/ServiceManager.java index cb6863b6..87f29b80 100644 --- a/server/src/main/java/com/genymobile/scrcpy/wrappers/ServiceManager.java +++ b/server/src/main/java/com/genymobile/scrcpy/wrappers/ServiceManager.java @@ -11,7 +11,6 @@ import java.lang.reflect.Method; public final class ServiceManager { public static final String PACKAGE_NAME = "com.android.shell"; - public static final int USER_ID = 0; private static final Method GET_SERVICE_METHOD; static {