【问题标题】:Qt Quick Android : How to integrate an Accessibility ServiceQt Quick Android:如何集成辅助功能服务
【发布时间】:2016-03-18 17:31:53
【问题描述】:

我正在开发一个运行无障碍服务的 Android 应用程序。我在 Android Studio 中开发了服务 java 类和配置 xml 文件,以将其作为本机应用程序进行测试。当我运行它时,无障碍服务按预期出现在 Android 无障碍设置中,我可以启用它。

但是,我想将此服务集成到 Qt Quick Android 应用程序中。当我通过添加相同的 java 类、Manifest 和配置 xml 文件来执行此操作时,项目编译并运行良好,但服务未出现在 Android 设置中。

这是我的配置文件:

Manifest.xml:

<activity
...
</activity>
<service android:name="com.myCompany.app.MyService"
         android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
        <intent-filter>
            <action android:name="android.accessibilityservice.AccessibilityService"/>
        </intent-filter>
        <meta-data android:name="android.accessibilityservice"/>
        <meta-data android:resource="@xml/accessibilityservice"/>
</service>

可访问性服务.xml:

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service
xmlns:tools="http://schemas.android.com/tools"
android:accessibilityEventTypes="typeWindowStateChanged"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagIncludeNotImportantViews"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:ignore="UnusedAttribute"/>

谁能告诉我哪里错了?

【问题讨论】:

    标签: android qt-quick accessibilityservice


    【解决方案1】:

    我自己发现了错误。在 manifest.xml 中,元数据标记应位于一行,如下所示:

    <activity>
    ...
    </activity>
    <service android:name="com.myCompany.app.MyService"
             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/accessibilityservice"/>
    </service>
    

    【讨论】: