Skip to content

Commit 0c4780c

Browse files
committed
fix setUiAutomationFlags not working bug
1 parent 3280af0 commit 0c4780c

File tree

3 files changed

+20
-20
lines changed

3 files changed

+20
-20
lines changed

app/src/androidTest/java/com/github/uiautomator/stub/AccessibilityNodeInfoDumper.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.uiautomator.stub;
22

3+
import android.accessibilityservice.AccessibilityServiceInfo;
34
import android.app.UiAutomation;
45
import android.os.Build;
56
import android.util.Log;
@@ -10,6 +11,7 @@
1011
import android.view.accessibility.AccessibilityWindowInfo;
1112

1213
import androidx.annotation.RequiresApi;
14+
import androidx.test.filters.SdkSuppress;
1315
import androidx.test.platform.app.InstrumentationRegistry;
1416
import androidx.test.uiautomator.UiDevice;
1517
import androidx.test.uiautomator.util.Traces;
@@ -81,7 +83,7 @@ static AccessibilityNodeInfo[] getWindowRoots(UiDevice device) {
8183
return roots.toArray(new AccessibilityNodeInfo[0]);
8284
}
8385

84-
@RequiresApi(21)
86+
@SdkSuppress(minSdkVersion = 21)
8587
private static List<AccessibilityWindowInfo> getWindows(UiAutomation uiAutomation) {
8688
// Support multi-display searches for API level 30 and up.
8789
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {

app/src/androidTest/java/com/github/uiautomator/stub/AutomatorServiceImpl.java

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
package com.github.uiautomator.stub;
2525

26-
import android.accessibilityservice.AccessibilityServiceInfo;
2726
import android.app.Instrumentation;
2827
import android.app.UiAutomation;
2928
import android.content.ClipData;
@@ -39,7 +38,6 @@
3938
import android.view.KeyEvent;
4039
import android.view.MotionEvent;
4140

42-
import androidx.core.accessibilityservice.AccessibilityServiceInfoCompat;
4341
import androidx.test.platform.app.InstrumentationRegistry;
4442
import androidx.test.uiautomator.Configurator;
4543
import androidx.test.uiautomator.Direction;
@@ -85,17 +83,23 @@ public class AutomatorServiceImpl implements AutomatorService {
8583
ClipboardManager clipboard;
8684

8785
public AutomatorServiceImpl() {
88-
mInstrumentation = InstrumentationRegistry.getInstrumentation();
89-
uiAutomation = mInstrumentation.getUiAutomation();
90-
86+
// Reset Configurator Wait Timeout
87+
Configurator configurator = Configurator.getInstance();
88+
configurator.setWaitForSelectorTimeout(0L); // Default 10000
89+
configurator.setWaitForIdleTimeout(0L); // Default 10000
90+
configurator.setActionAcknowledgmentTimeout(500); // Default 3000
91+
configurator.setScrollAcknowledgmentTimeout(200); // Default 200
92+
configurator.setKeyInjectionDelay(0); // Default 0
9193
// https://developer.android.com/reference/androidx/core/accessibilityservice/AccessibilityServiceInfoCompat#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY()
9294
// https://www.jianshu.com/p/a8ccd607e172
9395
// https://developer.android.com/reference/android/app/UiAutomation
96+
// The problem is after set flags |= 8, the service always crash.
97+
// configurator.setUiAutomationFlags(configurator.getUiAutomationFlags() | AccessibilityServiceInfoCompat.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY);
98+
99+
mInstrumentation = InstrumentationRegistry.getInstrumentation();
100+
uiAutomation = mInstrumentation.getUiAutomation();
94101

95-
AccessibilityServiceInfo info = uiAutomation.getServiceInfo();
96-
// improve accessibility support for "android.webkit.WebView" q
97-
info.flags |= AccessibilityServiceInfoCompat.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY;
98-
uiAutomation.setServiceInfo(info);
102+
//uiAutomation.setOnAccessibilityEventListener(new AccessibilityEventListener(device, watchers));
99103

100104
device = UiDevice.getInstance(mInstrumentation);
101105
touchController = new TouchController(mInstrumentation);
@@ -113,16 +117,6 @@ public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
113117
soundPool.play(sampleId, 1, 1, 1, 0, 1);
114118
}
115119
});
116-
117-
// Reset Configurator Wait Timeout
118-
Configurator configurator = Configurator.getInstance();
119-
configurator.setWaitForSelectorTimeout(0L); // Default 10000
120-
configurator.setWaitForIdleTimeout(0L); // Default 10000
121-
configurator.setActionAcknowledgmentTimeout(500); // Default 3000
122-
configurator.setScrollAcknowledgmentTimeout(200); // Default 200
123-
configurator.setKeyInjectionDelay(0); // Default 0
124-
125-
//uiAutomation.setOnAccessibilityEventListener(new AccessibilityEventListener(device, watchers));
126120
}
127121

128122
private UiAutomation getUiAutomation() {

app/src/androidTest/java/com/github/uiautomator/stub/ConfiguratorInfo.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ public void setWaitForSelectorTimeout(long _waitForSelectorTimeout) {
8282

8383
public int getUiAutomationFlags() { return _uiAutomationFlags; }
8484

85+
public void setUiAutomationFlags(int _uiAutomationFlags) {
86+
this._uiAutomationFlags = _uiAutomationFlags;
87+
}
88+
8589
public static void setConfigurator(ConfiguratorInfo info) {
8690
Configurator config = Configurator.getInstance();
8791
config.setActionAcknowledgmentTimeout(info.getActionAcknowledgmentTimeout());

0 commit comments

Comments
 (0)