java.lang.IllegalStateException: Невозможно выполнить это действие на незапечатанном экземпляре

1

Я использую сервис специальных возможностей, чтобы найти кнопку на экране и щелкнуть ее, но по какой-то причине я получаю следующую ошибку:

java.lang.IllegalStateException: Cannot perform this action on a not sealed instance.
    at android.view.accessibility.AccessibilityNodeInfo.enforceSealed(AccessibilityNodeInfo.java:3046)
    at android.view.accessibility.AccessibilityNodeInfo.findAccessibilityNodeInfosByText(AccessibilityNodeInfo.java:1529)
    at com.myapp.adapters.Adapter_Click$11.run(Adapter_Click.java:1874)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6718)
    at java.lang.reflect.Method.invoke(Method.java:-2)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

И строка, на которую это ссылается, является:

List<AccessibilityNodeInfo> list = source.findAccessibilityNodeInfosByText("Accept".toLowerCase());

И затем я использую это, чтобы нажать на кнопку:

if (view.performAction(AccessibilityNodeInfo.ACTION_CLICK)) 
{
  Log.e(TAG, "Button clicked");
}

Я не видел никаких проблем с этим в течение прошлого года, пока я только недавно не обновил до AndroidX. Есть ли способ проверить, является ли это запечатанным экземпляром, прежде чем пытаться щелкнуть по нему? Я даже попытался обернуть его в попытку/поймать, и это все еще не работает мое приложение.

Теги:
accessibilityservice

1 ответ

0

Запечатывание сделано, чтобы сделать узлы неизменяемыми. Такие исключения часто возникают, когда служба использует узел после его повторного использования.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню