微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的无障碍服务没有启动?

如何解决为什么我的无障碍服务没有启动?

我创建了一个辅助功能服务,以查看是否可以使用我的应用执行手势导航。问题是我的可访问性服务根本没有启动。可能出现此问题的提示是,我在设置页面的可访问性部分看不到我的应用程序。我已经在清单文件添加了适当的权限,但是看不到我要去哪里哪里。

这是我的清单文件

<service 
            android:name=".AccessibilityService"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
            android:label="@string/accessibility_service_label">
            <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:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="FeedbackAllMask"
    android:accessibilityFlags="flagDefault"
    android:canRequestEnhancedWebAccessibility="true"
    android:canRetrieveWindowContent="true"
    android:packageNames="com.example.adtry3"
    android:canRequestTouchExplorationMode="true"
    android:settingsActivity="com.example.adtry3.MainActivity" />

这是我的无障碍服务类别:

package com.example.adtry3;

import android.accessibilityservice.AccessibilityServiceInfo;
import android.annotation.TargetApi;
import android.os.Build;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import androidx.annotation.RequiresApi;
import java.util.List;



@TargetApi(Build.VERSION_CODES.DONUT)
public class AccessibilityService extends android.accessibilityservice.AccessibilityService {


    @Override
    public void onServiceConnected(){           
        System.out.println("ONSERVICECONNECTED");
        
        AccessibilityServiceInfo info = getServiceInfo();
        
        info.FeedbackType = AccessibilityServiceInfo.FeedBACK_ALL_MASK;
        info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
        info.packageNames = new String[] {"com.example.adtry3"};
        info.notificationTimeout = 100;
        
        setServiceInfo(info);
    }
    
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) { 
       System.out.println("Testing");
    }



    @Override
    public void onInterrupt() {

    }


    public void onUnbind(){         //service is being terminated,do final one-time operations here

    }

}

最后,这是我的MainActivity.java的OnCreate方法

@Override
    protected void onCreate(Bundle savedInstanceState) {
        Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS);
        startActivityForResult(intent,0);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
}

如果我缺少任何东西,或者如果您知道发生了什么事,请告诉我。我在其他StackOverflow答案中进行了搜索,但没有运气。谢谢。

解决方法

将此过滤器添加到清单中的<service声明

<intent-filter>
    <action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>

您还可能必须在服务配置xml中添加这些行

android:description="@string/accessibility_service_desc"
android:notificationTimeout="25"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。