Add workaround for Pico 4 Ultra

Make ActivityThread.isSystem() return true to avoid a
NullPointerException later.

Refs #5659 comment <https://github.com/Genymobile/scrcpy/issues/5659#issuecomment-2540963953>
Fixes #5659 <https://github.com/Genymobile/scrcpy/issues/5659>
This commit is contained in:
Romain Vimont 2024-12-14 10:15:20 +01:00
parent 69264703b1
commit dc2fcc46f5

View File

@ -42,6 +42,11 @@ public final class Workarounds {
Field sCurrentActivityThreadField = ACTIVITY_THREAD_CLASS.getDeclaredField("sCurrentActivityThread"); Field sCurrentActivityThreadField = ACTIVITY_THREAD_CLASS.getDeclaredField("sCurrentActivityThread");
sCurrentActivityThreadField.setAccessible(true); sCurrentActivityThreadField.setAccessible(true);
sCurrentActivityThreadField.set(null, ACTIVITY_THREAD); sCurrentActivityThreadField.set(null, ACTIVITY_THREAD);
// activityThread.mSystemThread = true;
Field mSystemThreadField = ACTIVITY_THREAD_CLASS.getDeclaredField("mSystemThread");
mSystemThreadField.setAccessible(true);
mSystemThreadField.setBoolean(ACTIVITY_THREAD, true);
} catch (Exception e) { } catch (Exception e) {
throw new AssertionError(e); throw new AssertionError(e);
} }