当前位置: 首页 > 知识库问答 >
问题:

检测我的无障碍服务是否启用

祁通
2023-03-14

我想知道如何检测我自己的服务是否启用。所以我可以检查我的服务是否未启用,然后告诉用户启用它。

共有3个答案

查飞星
2023-03-14

这是一个较小的版本,但它正在工作。

fun isAccessServiceEnabled(context: Context): Boolean {
    val prefString =
        Settings.Secure.getString(context.contentResolver, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES)
    return prefString.contains("${context.packageName}/${context.packageName}.${context.getString(R.string.access_service_name)}")
}

如果缺少什么,请随时纠正我。

董永宁
2023-03-14

这是Jakub Bláha答案的java修改版。

public boolean isAccessServiceEnabled(Context context, Class accessibilityServiceClass)
{
    String prefString = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);

    return prefString!= null && prefString.contains(context.getPackageName() + "/" + accessibilityServiceClass.getName());
}
丁钟展
2023-03-14

下面是检查是否启用了辅助功能服务的方法。

注意:使用您的服务更改YOURAccessibilityService的值。

// To check if service is enabled
private boolean isAccessibilitySettingsOn(Context mContext) {
    int accessibilityEnabled = 0;
    final String service = getPackageName() + "/" + YOURAccessibilityService.class.getCanonicalName();
    try {
        accessibilityEnabled = Settings.Secure.getInt(
                mContext.getApplicationContext().getContentResolver(),
                android.provider.Settings.Secure.ACCESSIBILITY_ENABLED);
        Log.v(TAG, "accessibilityEnabled = " + accessibilityEnabled);
    } catch (Settings.SettingNotFoundException e) {
        Log.e(TAG, "Error finding setting, default accessibility to not found: "
                + e.getMessage());
    }
    TextUtils.SimpleStringSplitter mStringColonSplitter = new TextUtils.SimpleStringSplitter(':');

    if (accessibilityEnabled == 1) {
        Log.v(TAG, "***ACCESSIBILITY IS ENABLED*** -----------------");
        String settingValue = Settings.Secure.getString(
                mContext.getApplicationContext().getContentResolver(),
                Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
        if (settingValue != null) {
            mStringColonSplitter.setString(settingValue);
            while (mStringColonSplitter.hasNext()) {
                String accessibilityService = mStringColonSplitter.next();

                Log.v(TAG, "-------------- > accessibilityService :: " + accessibilityService + " " + service);
                if (accessibilityService.equalsIgnoreCase(service)) {
                    Log.v(TAG, "We've found the correct setting - accessibility is switched on!");
                    return true;
                }
            }
        }
    } else {
        Log.v(TAG, "***ACCESSIBILITY IS DISABLED***");
    }

    return false;
}

调用此方法:

if (!isAccessibilitySettingsOn(getApplicationContext())) {
    startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
}

这将检查并启动辅助功能设置(如果未启用)。

 类似资料:
  • 本文向大家介绍微服务测试的主要障碍是什么?相关面试题,主要包含被问及微服务测试的主要障碍是什么?时的应答技巧和注意事项,需要的朋友参考一下 说到缺点,这里是另一个微服务面试问题,将围绕测试微服务时面临的挑战。 在开始编写集成测试的测试用例之前,测试人员应该全面了解对所有入站和出站过程。 当独立的团队正在开发不同的功能时,协作可能会被证明是一项非常困难的任务。很难找到空闲时间窗口来执行完整的回归测试

  • 有人能解释一下android 11的可访问性操作/权限会发生什么吗?就像现在,我使用辅助功能服务在第三方应用程序上做一些没有用户干扰的事情。Whatsapp。例如,我试图建立一个语音助手类的应用程序,它通过谷歌的语音api接收用户输入,并识别命令,然后基于这些命令,使用辅助服务在whatsapp中执行操作。这东西一直到android 10都很好用。那么在这个流程中我能期待android 11有什么

  • 引子 这篇教程旨在帮助开发者快速上手 Rax iOS 上的无障碍开发。 无障碍,即「accessibility」(常常缩写成「a11y」),是相对有障碍访问而言的,常见的有障碍访问场景有两类。 一种是用户因为生理缺陷,没有能力按正常的交互方式访问,举几个例子: 视障人士看不见或看不清,无法感受手淘上的信息,动效,氛围; 听障人士听不见或听不清,无法听到音乐以及视频的语音部分; 老年人视力和听力的退

  • 无障碍性(a11y) 当你设计一款扩展,需要让扩展对于诸如视觉缺陷,失聪,行动不便的残疾人没有使用障碍。 所有人 — 不仅仅是有特殊需求的人 — 都应该能从那些无障碍扩展所提供的相应模式中获益。例如,键盘的快捷键对于盲人,灵敏度较差的那些人非常重要,然而他们也能提高高级用户在无鼠标状态下的工作效率。 字幕和手抄本提供了聋人获取影音内容的通道,然而他们对语言学习者也非常有用。 人们可以通过各种方式和