Skip to content

Commit 484f38b

Browse files
committed
Use FakeContext for Application instance
This will expose the correct package name and UID to the application context. PR #3757 <#3757>
1 parent 013bf96 commit 484f38b

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

server/src/main/java/com/genymobile/scrcpy/Workarounds.java

+5-8
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@
22

33
import android.annotation.SuppressLint;
44
import android.app.Application;
5-
import android.app.Instrumentation;
6-
import android.content.Context;
5+
import android.content.ContextWrapper;
76
import android.content.pm.ApplicationInfo;
87
import android.os.Looper;
98

109
import java.lang.reflect.Constructor;
1110
import java.lang.reflect.Field;
12-
import java.lang.reflect.Method;
1311

1412
public final class Workarounds {
1513
private Workarounds() {
@@ -62,11 +60,10 @@ public static void fillAppInfo() {
6260
mBoundApplicationField.setAccessible(true);
6361
mBoundApplicationField.set(activityThread, appBindData);
6462

65-
// Context ctx = activityThread.getSystemContext();
66-
Method getSystemContextMethod = activityThreadClass.getDeclaredMethod("getSystemContext");
67-
Context ctx = (Context) getSystemContextMethod.invoke(activityThread);
68-
69-
Application app = Instrumentation.newApplication(Application.class, ctx);
63+
Application app = Application.class.newInstance();
64+
Field baseField = ContextWrapper.class.getDeclaredField("mBase");
65+
baseField.setAccessible(true);
66+
baseField.set(app, FakeContext.get());
7067

7168
// activityThread.mInitialApplication = app;
7269
Field mInitialApplicationField = activityThreadClass.getDeclaredField("mInitialApplication");

0 commit comments

Comments
 (0)