新增 可以使用"查看使用统计权限"增强currentPackage()的准确性,在代码中通过auto.setFlags("useUsageStats")启用
This commit is contained in:
@@ -110,7 +110,8 @@ module.exports = function(runtime, global){
|
||||
}
|
||||
|
||||
const flagsMap = {
|
||||
"findOnUiThread": 1
|
||||
"findOnUiThread": 1,
|
||||
"useUsageStats": 2
|
||||
};
|
||||
|
||||
var auto = function(mode){
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
@@ -67,7 +68,7 @@ public abstract class AutoJs {
|
||||
mAppUtils = createAppUtils(mContext);
|
||||
mGlobalConsole = createGlobalConsole();
|
||||
mNotificationObserver = new AccessibilityNotificationObserver(mContext);
|
||||
mAccessibilityInfoProvider = new AccessibilityInfoProvider(mContext.getPackageManager());
|
||||
mAccessibilityInfoProvider = new AccessibilityInfoProvider(mContext);
|
||||
mScriptEngineService = buildScriptEngineService();
|
||||
ScriptEngineService.setInstance(mScriptEngineService);
|
||||
init();
|
||||
@@ -205,7 +206,7 @@ public abstract class AutoJs {
|
||||
private class AccessibilityBridgeImpl extends AccessibilityBridge {
|
||||
|
||||
public AccessibilityBridgeImpl(UiHandler uiHandler) {
|
||||
super(createAccessibilityConfig(), uiHandler);
|
||||
super(mContext, createAccessibilityConfig(), uiHandler);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
package com.stardust.autojs.core.accessibility;
|
||||
|
||||
import android.app.AppOpsManager;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import android.view.accessibility.AccessibilityWindowInfo;
|
||||
|
||||
import com.stardust.app.AppOpsKt;
|
||||
import com.stardust.autojs.runtime.accessibility.AccessibilityConfig;
|
||||
import com.stardust.util.IntentUtil;
|
||||
import com.stardust.util.UiHandler;
|
||||
import com.stardust.view.accessibility.AccessibilityInfoProvider;
|
||||
import com.stardust.view.accessibility.AccessibilityNotificationObserver;
|
||||
@@ -27,17 +33,20 @@ public abstract class AccessibilityBridge {
|
||||
public static final int MODE_FAST = 1;
|
||||
|
||||
public static final int FLAG_FIND_ON_UI_THREAD = 1;
|
||||
public static final int FLAG_USE_USAGE_STATS = 2;
|
||||
|
||||
private int mMode = MODE_NORMAL;
|
||||
private int mFlags = 0;
|
||||
private final AccessibilityConfig mConfig;
|
||||
private WindowFilter mWindowFilter;
|
||||
private final UiHandler mUiHandler;
|
||||
private final Context mContext;
|
||||
|
||||
public AccessibilityBridge(AccessibilityConfig config, UiHandler uiHandler) {
|
||||
public AccessibilityBridge(Context context, AccessibilityConfig config, UiHandler uiHandler) {
|
||||
mConfig = config;
|
||||
mUiHandler = uiHandler;
|
||||
mConfig.seal();
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
public abstract void ensureServiceEnabled();
|
||||
@@ -80,7 +89,6 @@ public abstract class AccessibilityBridge {
|
||||
mWindowFilter = windowFilter;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public abstract AccessibilityInfoProvider getInfoProvider();
|
||||
|
||||
public void setMode(int mode) {
|
||||
@@ -93,6 +101,13 @@ public abstract class AccessibilityBridge {
|
||||
|
||||
public void setFlags(int flags) {
|
||||
mFlags = flags;
|
||||
if ((mFlags & FLAG_USE_USAGE_STATS) != 0 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
if (!AppOpsKt.isOpPermissionGranted(mContext, AppOpsManager.OPSTR_GET_USAGE_STATS)) {
|
||||
IntentUtil.requestAppUsagePermission(mContext);
|
||||
throw new SecurityException("没有\"查看使用情况\"权限");
|
||||
}
|
||||
}
|
||||
getInfoProvider().setUseUsageStats((mFlags & FLAG_USE_USAGE_STATS) != 0);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
||||
Reference in New Issue
Block a user