Telegram вылетает при активации overlay

Рейтинг: 0Ответов: 1Опубликовано: 27.02.2023

Я создал android приложение, которое с помощью accessibility сервиса отслеживает введенный пользователем в любые поля текст. Если введенный текст удовлетворяет некоторым условиям, появляется overlay. Я реализовал его появление так:

windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        width, // Ширина экрана
        height, // Высота экрана
        WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY,
        WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
        PixelFormat.TRANSLUCENT);

params.gravity = Gravity.TOP | Gravity.RIGHT;
params.x = 0;
params.y = 0;

rootView = (ConstraintLayout) LayoutInflater.from(t).inflate(R.layout.overlay_layout, null);
pathText = rootView.findViewById(R.id.pathText);
accessibilityNodeInfo.performAction(AccessibilityNodeInfo.FOCUS_ACCESSIBILITY);
windowManager.addView(rootView, params);

Моё приложение работает во всех проверенных приложениях кроме telegram. Когда я ввожу в поле телеграмма некоторый текст, удовлетворяющий условиям открытия overlay, telegram вылетает. С помощью logcat я смог поймать ошибку, возникающую в telegram:

FATAL EXCEPTION: main
Process: org.telegram.messenger, PID: 8644
java.lang.NullPointerException: name is null
at android.content.res.ResourcesImpl.getIdentifier(ResourcesImpl.java:261)
at android.content.res.Resources.getIdentifier(Resources.java:2156)
at android.view.AccessibilityInteractionController.findAccessibilityNodeInfosByViewIdUiThread(AccessibilityInteractionController.java:394)
at android.view.AccessibilityInteractionController.access$600(AccessibilityInteractionController.java:75)
at android.view.AccessibilityInteractionController$PrivateHandler.handleMessage(AccessibilityInteractionController.java:1466)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Из-за чего возникает эта ошибка и как переписать моё приложение, чтобы она не возникала?

Ответы

▲ 0Принят

Проблема оказалась в вызове функции findAccessibilityNodeInfosByViewId:

windowId = source.getViewIdResourceName();
source.findAccessibilityNodeInfosByViewId(windowId);

Данная функция возвращает null, а также из-за неё вылетает telegram.

Я переписал своё приложение так, чтобы оно не использовало findAccessibilityNodeInfosByViewId