AccessibilityService中的Android onAccessibilityEvent未被调用

问题描述 投票:0回答:1

我尝试开发一个非常简单的场景,当事件发生时,我只会收到一条小的敬酒消息。不幸的是,我找不到下面的代码为什么不打开祝酒消息。我知道我已经阅读了一些有关该主题的帖子,但没有一个能够帮助我。如果有人可以帮助我或提供一个有效的例子,我将不胜感激。

清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.testing.attackondatacollector">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <service android:name=".MaliciousService"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
            android:label="A malicious service">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
            </intent-filter>
        </service>
    </application>

</manifest>

服务

package com.example.android.testing.attackondatacollector;

import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Toast;

public class MaliciousService extends AccessibilityService {

    @Override
    public void onServiceConnected() {
        AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
        info.notificationTimeout = 100;
        this.setServiceInfo(info);
        Toast t = Toast.makeText(getApplicationContext(), "Malicious Accessibility Service is connected now", Toast.LENGTH_SHORT);
        t.show();
    }

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        Toast t = Toast.makeText(getApplicationContext(), "An event occurred", Toast.LENGTH_SHORT);
        t.show();
    }

    @Override
    public void onInterrupt() {
        Toast t = Toast.makeText(getApplicationContext(), "An interrupt occurred", Toast.LENGTH_SHORT);
        t.show();
    }
}

我在设置中打开了服务,并且得到了最初的Toast,上面写着“恶意服务已连接”。但是,每当我滑动或打开新活动或其他内容时,我都不会得到其他吐司。

android events accessibilityservice
1个回答
0
投票

您必须在主线程上显示吐司。如果您仅将吐司用于调试,请使用日志。

请阅读此

Android Service to show toast

© www.soinside.com 2019 - 2024. All rights reserved.