10

を実装しようとしていAccessibilityServiceます。以下のコードを共有しました。設定メニューからアクセシビリティ サービスをオンにすると、onServiceConnected()呼び出されますが、onAccessibiltyEvent()まったく呼び出されません。これについて私を案内してください。

マニフェスト ファイルのサービス宣言。

<service
            android:name=".MyAccessibilityService"
            android:enabled="true"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService" />
            </intent-filter>

            <meta-data
                android:name="android.accessibilityservice"
                android:resource="@xml/accessibility_service_config" />
</service>

XML ファイル

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:description="@string/accessibility_service_description"
    android:accessibilityEventTypes="typeAllMask"
    android:canRequestFilterKeyEvents="true"
    android:accessibilityFlags="flagDefault"

    android:notificationTimeout="100"
    android:canRetrieveWindowContent="true"
    />

MyAccessibiltyService.java

public class MyAccessibilityService extends AccessibilityService {


    @Override
    protected void onServiceConnected() {
        super.onServiceConnected();
        Log.d(TAG,"Service Connected");

    }

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        System.out.println("Event Occurred");
        Log.d(TAG, "onAccessibilityEvent: event=" + event);
        AccessibilityNodeInfo nodeInfo = event.getSource();
        if (null == nodeInfo) return;


    }

    @Override
    public void onInterrupt() {
        Log.d(TAG,"Accessibility Interrupted" );

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG,"Service Destroyed");
    }
}

すべてのスタックオーバーフローの回答を既に確認しているため、これを重複としてマークしないでください。

4

3 に答える 3

2

監視したいアプリを定義するパッケージaccessibility_service_configが不足しているようです。を追加します。AccessibilityServiceandroid:packageNames="app.package.name"accessibility_service_config

ここでAndroid デベロッパー ガイドを参照できます。

エイト:

パッケージ名を指定しないと、すべてのパッケージを監視することを意味するようです。パッケージを指定して、動作するかどうかを確認してみてください。

于 2016-11-09T09:36:50.170 に答える