From 78658fdfc37716773b530137d3a9c83e21152cb8 Mon Sep 17 00:00:00 2001 From: TonyJiangWJ Date: Mon, 16 Aug 2021 09:58:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E6=97=A0=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E6=89=A7=E8=A1=8C=E6=97=B6=E4=B8=8D=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E6=97=A0=E6=84=8F=E4=B9=89=E7=9A=84=E6=97=A0=E9=9A=9C=E7=A2=8D?= =?UTF-8?q?=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/stardust/autojs/AutoJs.java | 2 +- .../autojs/core/activity/ActivityInfoProvider.kt | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/autojs/src/main/java/com/stardust/autojs/AutoJs.java b/autojs/src/main/java/com/stardust/autojs/AutoJs.java index d65b7780..5613c9f5 100644 --- a/autojs/src/main/java/com/stardust/autojs/AutoJs.java +++ b/autojs/src/main/java/com/stardust/autojs/AutoJs.java @@ -68,8 +68,8 @@ public abstract class AutoJs { mAppUtils = createAppUtils(mContext); mGlobalConsole = createGlobalConsole(); mNotificationObserver = new AccessibilityNotificationObserver(mContext); - mActivityInfoProvider = new ActivityInfoProvider(mContext); mScriptEngineService = buildScriptEngineService(); + mActivityInfoProvider = new ActivityInfoProvider(mContext, mScriptEngineManager); ScriptEngineService.setInstance(mScriptEngineService); init(); } diff --git a/autojs/src/main/java/com/stardust/autojs/core/activity/ActivityInfoProvider.kt b/autojs/src/main/java/com/stardust/autojs/core/activity/ActivityInfoProvider.kt index 331cae1e..2376f443 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/activity/ActivityInfoProvider.kt +++ b/autojs/src/main/java/com/stardust/autojs/core/activity/ActivityInfoProvider.kt @@ -14,6 +14,7 @@ import android.view.accessibility.AccessibilityWindowInfo import androidx.annotation.RequiresApi import com.stardust.app.isOpPermissionGranted import com.stardust.autojs.core.util.Shell +import com.stardust.autojs.engine.ScriptEngineManager import com.stardust.view.accessibility.AccessibilityDelegate import java.util.regex.Pattern @@ -21,7 +22,7 @@ import java.util.regex.Pattern * Created by Stardust on 2017/3/9. */ -class ActivityInfoProvider(private val context: Context) : AccessibilityDelegate { +class ActivityInfoProvider(private val context: Context, private val scriptEngineManager: ScriptEngineManager) : AccessibilityDelegate { private val mPackageManager: PackageManager = context.packageManager @@ -34,6 +35,9 @@ class ActivityInfoProvider(private val context: Context) : AccessibilityDelegate private var mShell: Shell? = null private var mUseShell = false + private val checkedPackage: Set = HashSet() + private val existsPackage: Set = HashSet() + val latestPackage: String get() { val compFromShell = mLatestComponentFromShell @@ -78,8 +82,13 @@ class ActivityInfoProvider(private val context: Context) : AccessibilityDelegate override fun onAccessibilityEvent(service: AccessibilityService, event: AccessibilityEvent): Boolean { if (event.eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) { + if (scriptEngineManager.engines.size == 0) { + return false + } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + val start: Long = System.currentTimeMillis() val window = service.getWindow(event.windowId) + Log.d(LOG_TAG, "get window cost: " + (System.currentTimeMillis() - start) + "ms") if (window?.isFocused != false) { setLatestComponent(event.packageName, event.className) return false @@ -166,8 +175,13 @@ class ActivityInfoProvider(private val context: Context) : AccessibilityDelegate } private fun isPackageExists(packageName: String): Boolean { + if (checkedPackage.contains(packageName)) { + return existsPackage.contains(packageName) + } + checkedPackage.plus(packageName) return try { mPackageManager.getPackageInfo(packageName, 0) + existsPackage.plus(packageName) true } catch (e: PackageManager.NameNotFoundException) { false