From 658195feb0979de3944018c8a386af0335664ee0 Mon Sep 17 00:00:00 2001 From: LiYin Date: Thu, 29 Feb 2024 02:53:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20MaaTouch=20?= =?UTF-8?q?=E5=9C=A8=20Android=2014=20=E4=B8=8A=E8=A7=A6=E6=8E=A7=E5=B4=A9?= =?UTF-8?q?=E6=BA=83=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/shxyke/MaaTouch/wrappers/InputManager.java | 4 ++-- .../com/shxyke/MaaTouch/wrappers/ServiceManager.java | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/shxyke/MaaTouch/wrappers/InputManager.java b/app/src/main/java/com/shxyke/MaaTouch/wrappers/InputManager.java index dd6df5f..d184d22 100644 --- a/app/src/main/java/com/shxyke/MaaTouch/wrappers/InputManager.java +++ b/app/src/main/java/com/shxyke/MaaTouch/wrappers/InputManager.java @@ -13,10 +13,10 @@ public final class InputManager { public static final int INJECT_MODE_WAIT_FOR_RESULT = 1; public static final int INJECT_MODE_WAIT_FOR_FINISH = 2; - private final android.hardware.input.InputManager manager; + private final Object manager; private Method injectInputEventMethod = null; - public InputManager(android.hardware.input.InputManager manager) { + public InputManager(Object manager) { this.manager = manager; } diff --git a/app/src/main/java/com/shxyke/MaaTouch/wrappers/ServiceManager.java b/app/src/main/java/com/shxyke/MaaTouch/wrappers/ServiceManager.java index 18d4a2b..2281542 100644 --- a/app/src/main/java/com/shxyke/MaaTouch/wrappers/ServiceManager.java +++ b/app/src/main/java/com/shxyke/MaaTouch/wrappers/ServiceManager.java @@ -1,6 +1,7 @@ package com.shxyke.MaaTouch.wrappers; import android.annotation.SuppressLint; +import android.os.Build; import android.os.IBinder; import android.os.IInterface; @@ -46,10 +47,15 @@ public DisplayManager getDisplayManager() { public InputManager getInputManager() { if (inputManager == null) { try { - Method getInstanceMethod = android.hardware.input.InputManager.class.getDeclaredMethod("getInstance"); - android.hardware.input.InputManager im = (android.hardware.input.InputManager) getInstanceMethod.invoke(null); + Method getInstanceMethod; + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { + getInstanceMethod = Class.forName("android.hardware.input.InputManagerGlobal").getMethod("getInstance"); + } else { + getInstanceMethod = android.hardware.input.InputManager.class.getDeclaredMethod("getInstance"); + } + Object im = getInstanceMethod.invoke(null); inputManager = new InputManager(im); - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); throw new AssertionError(e); }